こんにちは、春日井コワーキングスペースRoom8オーナーの鶴田です!最近は、名古屋・春日井を中心にAIコンサルタントもしています。
Room8 DX化プロジェクト3日目の今回は、「AIによるスプレッドシート解析」について詳しくお話しします。前回の記事では、Googleフォームから情報をスプレッドシートに保存する仕組みについて紹介しました。
今回は、そのスプレッドシートに蓄積された入会申込データをAIがどう「理解」し、次の処理へと自動的につなげるのか、その仕組みを解説します。一人で事業を回す上で、この「判断の自動化」がいかに重要かを実感していただけると思います。
特に「エンジニアだけど社内システムの自動化には手が回らない」という方には、大きなヒントになるはずです。プログラミングの複雑なロジックをAIの「理解力」に置き換える方法、ぜひ参考にしてください!
なぜAIによる解析が必要なのか

エンジニアとしての葛藤から始まった今回の取り組み。実は僕、エンジニアとしての経験があるので、これまでも自動化することは技術的には可能でした。何度か「自動化しよう」と思ったこともあります。
でも、そこで必ず壁にぶつかってました:
「申込内容を振り分けるロジックを考えて書くのが、とにかく面倒くさい」
クライアントワークなら収入になるので喜んでやりますが、自社のシステムって直接お金に繋がる訳じゃないんですよね。結局「まあ、手動でやるか…」となって先送りしてました。
特に面倒だったのが:
- プランや支払方法ごとに複雑に分岐するロジックの実装
- 例外ケースが出るたびにコードを修正する必要性
- 「あいまいな入力」への対応方法を全部決めておく作業
でも発想を転換すると、この「振り分け」って本来人間がやると簡単な作業なんですよね。「あ、これはこのプランだな」と一目見ればわかる。それをコードで表現するから複雑になるんです。
AIは人間と同じように「見て理解する」ことができる。しかも人よりも高速で、24時間疲れずに判断できる。これなら、複雑なコードを書かなくても、人間が判断するような指示を自然言語で与えるだけで自動化できるはず!
現状のデータ収集フロー

まずは現状の流れを簡単におさらいします。Room8の入会申込処理は、これまで以下のようなフローで行っていました:
- お客様がGoogleフォームで入会申込を行う
- 基本情報(名前、連絡先、利用開始日など)
- プラン種別(コワーキング/シェアオフィス)で分岐
- それぞれのプラン内でさらに複数の選択肢
- 割引サービスやオプションの選択
- 支払方法(クレジットカード/請求書/口座振替)の選択
- 回答内容が自動的にスプレッドシートに保存される
- タイムスタンプ、お名前、メールアドレス、電話番号、利用開始日…と項目が横に並ぶ
- 全部で20項目以上の情報が一行に詰まっている状態
- 申込時刻順に一行ずつデータが追加されていく
- 僕(人間)が内容を確認して次の処理を手動で行う
- スプレッドシートを開いて新規申込を確認
- コワーキング/シェアオフィスの判別
- 選択されたプラン、割引、オプションの確認
- 支払方法に応じて処理を振り分け
- Stripe/Misoca/Paidなど各システムに手作業でデータ入力
このフローの最大の問題は、3番目のステップでした。20項目以上ある申込データを読み解き、プラン・オプション・支払方法の組み合わせに応じて適切な処理を判断する…この複雑な判断作業が、一人運営の大きな負担になっていたんです。
しかも、申込が増えるほど作業量も増える。そして「今すぐ使いたい」というお客様の期待に応えるためには、タイムリーな対応が必要です。
この「複雑なデータを読み解き→適切な処理につなげる」という部分こそ、AIに任せられる絶好のポイントだと気づいたのです。
AIによる解析の仕組み

ではいよいよ、AIを使ったスプレッドシート解析の仕組みについて説明します。全体の流れはシンプルですが、ここがDX化プロジェクトの核心部分です。
1. Google Apps Script(GAS)でトリガーを設定
まず、新しい申込データがスプレッドシートに追加されたときに自動実行される仕組みを作りました:
// 新規レコードが追加されたときに実行される関数
function onFormSubmit(e) {
// 新しく追加されたデータの行を取得
var row = e.range.getRow();
var sheet = e.range.getSheet();
// AIによる解析を呼び出す
analyzeWithAI(sheet, row);
}
このコードはGoogleスプレッドシートに直接紐づくため、Googleフォームから回答が来るたびに自動的に起動します。つまり「人間がスプレッドシートを開いて確認する」という手順が不要になるわけです。
2. ChatGPT APIとの連携
次に、GASからChatGPT APIを呼び出して、スプレッドシートのデータを解析します:
function analyzeWithAI(sheet, row) {
// スプレッドシートから必要なデータを取得
var data = getRowData(sheet, row);
// データを整形して分かりやすく
var formattedData = formatDataForAI(data);
// ChatGPT APIにリクエスト
var response = callChatGPTAPI(formattedData);
// レスポンスに基づいて次のアクションを実行
processAIResponse(response, data);
}
ここでのポイントは、20項目以上ある複雑なデータを、AIが理解しやすい形式に整形する部分です。例えば「プラン選択」の列に「コワーキングプランA(月額20,000円)」という文字列があった場合、これを「プラン種別: コワーキング、プラン名: プランA、金額: 20000、課金単位: 月額」のように構造化します。
3. AIへの指示(プロンプト)設計
APIリクエストで最も重要なのが、AIへの指示文(プロンプト)です。ここでは以下のような指示を与えています:
「以下の入会申込データを分析し、(1)プラン種別(コワーキング/シェアオフィス)、(2)選択されたプラン内容、(3)支払方法、(4)特別な条件の有無を判断してください。そして、以下のルールに基づいて次のアクションを決定してください…」
この後に、支払方法ごとの処理ルールや、特殊ケースの対応方法を詳細に指示します。まるで新人スタッフに業務マニュアルを説明するような感覚です。
4. 結果に基づく処理の振り分け
AIからの回答を受け取ったら、その内容に基づいて次の処理を振り分けます:
function processAIResponse(response, data) {
// JSONとして解析
var result = JSON.parse(response);
// 判断結果に基づいて処理を振り分け
if (result.needsHumanCheck) {
// 人間の確認が必要な場合はメール通知
sendAlertEmail(data, result.reason);
} else if (result.paymentMethod === "credit_card") {
// クレジットカード支払い向けの処理を実行
flagForStripeProcessing(data, result);
} else if (result.paymentMethod === "invoice") {
// 請求書払い向けの処理を実行
flagForInvoiceProcessing(data, result);
} else if (result.paymentMethod === "bank_transfer") {
// 口座振替向けの処理を実行
flagForBankTransferProcessing(data, result);
}
// 処理結果をスプレッドシートに記録
updateProcessStatus(sheet, row, result);
}
ここでは実際の支払処理は行わず、AIの判断結果に基づいて「どの支払方法で処理すべきか」を判別し、それぞれの処理用にフラグを立てています。実際の支払処理(Stripe連携など)については、次回以降の記事で詳しく解説します。
同様に、契約書作成処理も別途実装しています。重要なのは、AIがデータを「理解」し、次のステップに正しく振り分けるところまでを自動化した点です。
これにより「申込が来たことに気づかず対応が遅れる」「手動での振り分けミスが発生する」といった問題を解決できると考えています。システムが24時間365日、正確に処理の振り分けをしてくれるようになる予定です。
この仕組みを実装することで、最初に掲げた「一人でも事業を回せる仕組みづくり」に一歩近づくことができます。もちろん、実際の運用ではまだ課題も出てくると思いますが、そこはDX化プロジェクトを進める中で改善していきたいと思います。
工夫と課題
AIを活用した自動化を進める中で、いくつかの課題に直面し、それを解決するための工夫も考えています。実装を進める際の参考になればと思い、共有します。
エラー処理と再試行の仕組み
APIリクエストはときに失敗することがあります。特にChatGPT APIはときどき「サーバーがビジー状態」になることも。そこで、以下のようなエラー処理を実装する予定です:
function callChatGPTAPI(prompt) {
const maxRetries = 3;
let retryCount = 0;
while (retryCount < maxRetries) {
try {
// API呼び出し処理
const response = makeAPIRequest(prompt);
return response;
} catch (error) {
retryCount++;
if (retryCount >= maxRetries) {
// 最大再試行回数を超えた場合は通知して処理中断
sendErrorNotification("API呼び出しが失敗しました", error);
throw error;
}
// 一定時間待機してから再試行
Utilities.sleep(2000 * retryCount);
}
}
}
このような再試行ロジックを入れることで、一時的なエラーでも自動復旧できるようになります。また、致命的なエラーが発生した場合は、すぐに通知が来るようにして、手動でフォローできるようにします。
コスト最適化
AIサービスは使用量に応じて課金されるため、コスト管理も重要な課題です。以下のような最適化を検討しています:
- 必要最小限のデータ送信
- 20項目以上ある申込データから、判断に必要な項目だけを抽出して送信
- 画像や大量テキストなど、判断に不要なデータは省略
- バッチ処理の検討
- リアルタイム処理が必須でないケースは、1日に1回まとめて処理する仕組みも検討
- 深夜の安いレート時間帯に処理を実行するスケジューリング
- シンプルケースは従来ロジックで処理
- 明らかに判断が容易なケースは、簡単なif文で処理
- 複雑な判断が必要なケースのみ、AIに振り分ける二段構造
現時点では申込数がそれほど多くないため、すべてAIで処理しても月に数百円程度のコストで収まりそうですが、将来のスケーラビリティを考えるとこれらの最適化は重要になってくるでしょう。
データの一貫性対策
入力フォームでは、同じ意味でも表記が揺れることがよくあります。例えば:
- 「クレジットカード」「クレカ」「VISA」
- 「月額会員」「マンスリー」「月会費」
これらの表記ゆれに対応するため、以下の対策を検討しています:
- フォーム自体の改善
- できるだけドロップダウンや選択肢形式を使い、自由入力を減らす
- 選択肢の文言を明確にして誤解を防ぐ
- AIへの学習例の提供
- プロンプト内に「『クレカ』『カード』などと書かれている場合もクレジットカード支払いと判断してください」といった例示を含める
- 過去の判断事例をAIに伝えて、パターン認識を助ける
- フィードバックループの構築
- AIが誤判断した場合は、その事例を記録して次回のプロンプトに反映
- 定期的にプロンプトを見直し、新しいパターンを追加
これらの対策を組み合わせることで、人間なら簡単に理解できる「表記ゆれ」や「あいまいな表現」にもAIが対応できるようになると考えています。
セキュリティとプライバシーへの配慮
個人情報を含むデータをAIに送信する際のセキュリティとプライバシーも重要な課題です。以下の対策を検討しています:
- データの最小化
- 氏名や連絡先などの個人情報は必要最低限に絞り、可能なら匿名化
- 判断に不要なセンシティブ情報は送信しない
- 適切なAIモデルの選択
- データが外部に保存されないAPIモデルを選択
- 可能であれば、将来的にはローカルで動作するAIモデルの検討
- 明確なデータポリシー
- 会員に対して、データの利用目的と保護方針を明示
- 法的要件に準拠したデータ処理を徹底
これらの課題と対策は、実際に実装を進める中で改善していく予定です。DX化プロジェクトの一環として、試行錯誤しながらよりよいシステムを構築していきたいと考えています。
今後の展望:エンジニアでなくてもできる自動化の世界へ
このAIによるスプレッドシート解析の取り組みで、僕が最も可能性を感じたのは「プログラミングの壁」が大きく下がったことです。従来なら「こういう複雑なロジックを書くのが面倒で…」と先送りしていた自動化が、AIにプロンプトを書くだけで実現できる可能性が見えてきました。
非エンジニアでも実現できる自動化
これまで「プログラミングができないから」と自動化を諦めていた小規模事業者にとって、AIを活用した自動化は大きなチャンスになると思います。
例えば、以下のようなケースも実現可能になるでしょう:
- 飲食店のテイクアウト注文をGoogleフォームで受け付け、AIが内容を解析して調理指示や配送手配を自動化
- 教室やサロンの予約管理で、AIが予約内容を理解して講師や教室の割り当てを自動判断
- 小売店の在庫管理で、発注パターンや顧客ニーズをAIが分析して発注を最適化
これらは従来なら専門的なプログラマーに依頼するか、高額なパッケージソフトを導入する必要がありましたが、AIを活用すれば比較的簡単に実現できる可能性があります。
自然言語での処理更新
今後の改善として最も期待しているのは、システムの「更新のしやすさ」です。
従来のプログラミングだと、ビジネスルールが変わるたびにコードを修正する必要がありました。例えば「新しい割引プランが追加された」「支払方法が増えた」といったケースでは、条件分岐のコードを書き直す必要があります。
しかしAIを使えば、プロンプトに一行追加するだけです:
「新しく追加された『学割プラン』は、メールアドレスが『.edu』や『.ac.jp』で終わる場合に適用されます。学生証の確認が必要なので、needsHumanCheckをtrueにしてください。」
このように、自然言語での指示だけでシステムの動作を更新できる柔軟性は、非常に大きなメリットだと考えています。
次のステップ:他APIとの連携強化
Room8 DX化プロジェクトの次のステップでは、今回作った「AIによる判断エンジン」を基盤として、各種APIとの連携を強化していく予定です。
- Stripe APIでの自動請求処理(Day5で詳述予定)
- AIが「クレジットカード支払い」と判断したケースで、自動的に請求処理を実行
- Misocaでの請求書自動発行(Day6で詳述予定)
- AIが「請求書払い」と判断したケースで、適切な請求書を自動生成
- 契約書PDF自動生成(Day10で詳述予定)
- 入会申込データから契約書のPDFを自動生成し、署名プロセスを効率化
これらの連携により、「入会申込→支払い処理→契約書作成」までの一連のフローを自動化し、運営の効率化を図っていきたいと考えています。
小規模事業者の未来
僕自身、「複雑なシステムは大企業のもの」と思い込んでいた部分があります。でもAIを活用した自動化が進むことで、小規模事業者でも高度なシステムを実現できる未来が来ると確信しています。
「プログラミングができなくても、業務の流れを言葉で説明できれば自動化できる」という世界は、多くの小規模事業主にとって朗報ではないでしょうか。
Room8 DX化プロジェクトを通じて、そんな可能性を探っていきたいと思います。このシリーズが、同じような課題を持つ方々の参考になれば嬉しいです。
まとめ:小さな一歩、大きな自動化
今回ご紹介したAIによるスプレッドシート解析は、Room8 DX化プロジェクトの基盤となる部分です。入会申込データをAIが自動で理解し、次のアクションにつなげる仕組みにより、一人で事業を回す上での大きな助けになると考えています。
ポイントをまとめると:
- エンジニアでも面倒だった複雑なロジック実装がAIで簡単に
- 「支払方法の判断」などの複雑な条件分岐が自然言語で指示可能に
- コードの修正・保守の手間を大幅に削減
- プロンプトエンジニアリングという新しいアプローチ
- 従来のプログラミングとは異なる設計思想
- 人間の言葉でシステムを構築・更新できる柔軟性
- 小規模事業者でも高度な自動化が現実的に
- プログラミングの壁を下げることで、導入ハードルが低下
- 一人事業主でも「手作業に追われない」運営が可能に
まだ実装は始まったばかりで、様々な課題も見えてくると思います。しかし、この「AIによる判断の自動化」を基盤として、今後の各種API連携(Stripe、Misoca、契約書生成など)を進めていけば、一人でも効率的に事業を運営できる仕組みが完成すると確信しています。
エンジニアリングバックグラウンドがあっても「自社システムの自動化に時間を割けない」という方は多いと思います。今回の取り組みが、そんな方々の参考になれば幸いです。
より詳細な実装方法やテンプレートについては、Room8のnoteアカウントで近日公開予定ですので、ご興味のある方はぜひフォローしておいてください。
次回は「Stripe APIでの自動請求処理」について詳しくご紹介する予定です。お楽しみに!