皆さんこんにちは、横浜で清掃業を営む49歳のヤスです。
前回は【Difyチャットボット】AIを鬼審査員に!無限ロープレ特訓マシン
のアプリを作りましたね。
「色々な作業をAIで全自動化する!」という野望を胸に、毎日PCにかじりついています。
今回は、これまで取り組んできた「DifyとGASを連携させた予約・見積もり自動化アプリ」の総決算です。結論から言うと、今回のシステムは**「惜しくも実戦投入見送りの、手動コピペ・アプリ(失敗作)」**として一旦クローズすることにしました!
「えっ、あんなに頑張って作ったのに!?」と思うかもしれません。確かに、AIがカレンダーを覗いて完璧な見積もりメールを作ってくれた時の感動は震えるほどでした。しかし、テストを繰り返す中で「現場で働く個人事業主」としては妥協できない2つの巨大な壁にぶち当たったのです。
この泥臭い失敗と試行錯誤のプロセスこそが、同じようにIT未経験から挑戦する同世代の仲間の役に立つと信じています。なぜ失敗したのか、そして次にどう繋げるのか。49歳の等身大の挑戦、全工程を詳細に公開します!
【結論】 今回作成したDify×GASアプリは、AIの気まぐれ(ハルシネーション)による連携エラーと、「お客様のメールをDifyの画面に手動でコピペしなければならない」という手間の壁を越えられず、実務での完全自動化には至りませんでした。
しかし、この失敗によって「AIをシステムに組み込む際の厳格なルール作り」と「Difyのワークフローの基礎」を完全にマスターできました。この土台があるからこそ、次回挑戦するノーコードツール「Make(メイク)」を使った【完全自動化(コピペ不要)アプリ】へと確実に繋がる、最高の「前進のための失敗」です!
【手順:Dify×GASで作る予約・見積もり自動化アプリの全貌】
今回のアプリが裏側でどう動いていたのか、ブロックごとに詳しく解説します。
① LLMブロック(メールの解読係) お客様からの雑多な長文メールから、「顧客名・住所・希望日時・依頼内容」だけを抽出します。 AIは気を利かせて「〇月〇日(土)」と曜日を入れたり、「10時頃」と曖昧な表現を使いがちです。これが後々のエラーの元凶になるため、プロンプトで「YYYY年M月D日 HH:MMの形式以外は絶対に出力するな」とガチガチに縛り、さらにAIの創造性を消すために「温度(Temperature)」を0に設定するという工夫が必要でした。
② コード実行ブロック(日付の整形係) AIが抜き出した日本語の日付を、GAS(Googleカレンダー)が理解できる数字とスラッシュのデータ(例:2026/4/25 10:00)に変換します。
JavaScript
// プログラムのメイン処理を開始します。date_text(AIが抜き出した文字)を受け取ります
function main({date_text}) {
// 1. 全角「:」でも半角「:」でも対応できるように、正規表現という技術で日付部分だけを狙い撃ちします
let match = date_text.match(/希望日時[::](.*)/);
// 2. 日付が見つかればその前後の空白を消して使い、見つからなければ「不明」という文字を入れます
let raw_date = match ? match[1].trim() : "不明";
// 3. お客さんがメールに希望日を書いていなかった(不明)場合の安全装置を起動させます
if (raw_date === "不明" || raw_date === "") {
// 4. そのまま進むとカレンダーが壊れるので、強制的に「未定」として次のブロックへパスを出します
return {
calendar_date: "未定"
};
// 5. IF文(安全装置)のブロックを閉じます
}
// 6. 「年」と「月」という漢字を、「/(スラッシュ)」に置き換えて、プログラムが読みやすくします
let step1 = raw_date.replace("年", "/").replace("月", "/");
// 7. 「日」という漢字を消し去って、数字と記号だけの綺麗な形にします
let formatted_date = step1.replace("日", "");
// 8. 最後に、綺麗に整形された日付データを、calendar_dateという名前の箱に入れて出力します
return {
calendar_date: formatted_date.trim()
};
// プログラムの処理を終了します
}
③ HTTPリクエストブロック(カレンダー確認係) ここがシステムの心臓部です。DifyからGoogleの世界へデータを飛ばし、自作したGAS(Google Apps Script)へ「この日時、カレンダー空いてる?」と問い合わせます。GASはカレンダーを瞬時に確認し、空いていれば「Free」、埋まっていれば「Busy」と返事を返してくれます。
④ 条件分岐ブロック(運命の信号機) GASからの返事を読み取り、「Free」なら予約を確定させる大当たりのルートへ、「Busy」なら別の日程を提案するお断りルートへ、処理を自動で二手に分けます。
⑤ 最後のLLMブロック(お返事作成係) 分岐した先のルートで、AIが最終的なメール文面を作成します。 ここでの最大の工夫は、AIに勝手な値付け(100円でエアコン掃除します!等の暴走)をさせないよう、プロンプト内に「自社の料金表」を丸ごと埋め込み、「この表からピックアップして計算しろ」と指示したことです。これにより、安全で正確な見積もりメールが生成できるようになりました。

【まとめ:なぜ「失敗」と判断したのか?】
完成したシステムに同じテストメールを3回流したところ、1回は完璧な予約メールができましたが、2回は「日時が確認できません」と失敗(ELSEルートへ進行)してしまいました。
この原因を「実行追跡(ログ)」で徹底的に調べた結果、AIが「2026/4/25(土)」と気を利かせて曜日を付け足してしまったことで、GASがそれを処理しきれずパニック(Busy判定)を起こしていたことが判明しました。 プロンプトや設定でAIをガチガチに縛り付けることでこのエラーは防げますが、「AIはたまに言うことを聞かない」というシステム上の脆さを痛感しました。
そして何より最大の理由は、「いちいちGmailを開いて、メールの文章をコピーし、Difyの画面に貼り付けて実行ボタンを押す」という手動の手間が残ってしまったことです。 現場を飛び回る個人事業主にとって、求めているのは「スマホを見たら勝手に下書きができている」という究極の自動化です。手動コピペが必要な時点で、実務ツールとしては不合格でした。
しかし、落ち込んでいる暇はありません! DifyとGASを繋げたこの経験値は、間違いなく私の血肉になっています。次回は、この「コピペの壁」をぶち破るべく、Gmailを受信した瞬間に全自動で裏側を動かしてくれるノーコード連携ツール**「Make(メイク)」**に挑戦します!
結構前にMake使ってみたんですけど、はまった記憶があるので
また時間かかるかもしれないけど、頑張ります!
xもやってるので良かったら見に来てください
次回も是非お楽しみに!


コメント