はじめに
前回の記事で、FP Chatbotから取得した情報をmiibo → make.com → Google Sheets → GASという流れでメール送信する仕組みを紹介しました。しかし、実際に運用してみると、思わぬ落とし穴が…。
「シートには行が追加されているのに、なぜかメールが送られない」という状況が起き、私自身2週間も悩むことになってしまいました。
今回は、その原因と解決策について詳しくお伝えします。
1. onEdit(e)関数と発火条件の誤解
1-1. 想定していた動き
- function onEdit(e) を利用して、シートが編集されたら(行が追加されたら)自動でメール送信する。
- ところが、スプレッドシートを手動で編集した場合はメールが届くのに、miibo + make.comから追加された行ではメールが来ない…。
1-2. 実際の動作
結論からいうと、onEdit(e)は「手動編集」のみをトリガーとするため、make.comなどの外部サービスが追加・編集したデータでは発火しません。
- 「編集=ユーザーが直接シートを触ること」を想定している
- 自動処理で行が挿入されても
onEdit(e)
には反応しない
2. 問題のコードとテスト時の落とし穴
function onEdit(e) {
if (!e) {
// 手動テスト用にサンプルデータを設定
Logger.log("手動実行中。イベントデータなし。");
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const row = 2; // テスト用の行番号
const nickname = sheet.getRange(row, 1).getValue();
const email = sheet.getRange(row, 2).getValue();
const rawText = sheet.getRange(row, 3).getValue();
const additionalData = getAdditionalData(sheet, row);if (nickname && email && rawText) {
sendCashFlowEmail(nickname, email, rawText, additionalData);
}
return;
}
// ...
}
- テストでは、スプレッドシートを直接編集→ onEdit(e)が発火→ メール送信OK
- miiboの会話テストからメールアドレス送信→ make.comで行追加→ メール来ない…
「コードは正しく動いているのに、なぜメールが届かない?」と、2週間もChatGPTに聞きながらスクリプトを何度も書き直してしまったのが実情でした。
3. 2週間後に気づいた真実:onEdit(e)は外部挿入に反応しない
- 外部ツール(make.comなど)による行追加では
onEdit(e)
は動作しない - これはGASを作り慣れている人には常識かもしれないが、初めての私には“まさか”の落とし穴
やっとその事実を知ったとき、2週間の苦労が一気に報われるような気持ちと、「もっと早く調べておけば…」という後悔が同時にやってきました。
4. じゃあどうすればいい? onChange or installable triggers で対応
4-1. onChange(e)やインストール型トリガーを検討
- onChange(e):スプレッドシートの構造が変更された時に発火
- インストール型トリガー:Google Apps Scriptの管理画面から「新しい行が追加されたとき」など柔軟に設定可能
5. まとめ:トリガーの仕組みを知っていれば回避できたトラブル
- **onEdit(e)**は、ユーザーが直接シートを編集した場合のみ発火する
- make.comなど外部サービスによる行追加では反応しない→別のトリガーか手動呼び出しが必要
- 気づくまでに2週間かかったのは痛かったですが、良い学びになりました
開発を進める中で、ChatGPTの出力は正しいが、**自分が知らない事は疑わない**という当たり前の事実を再確認。次回からはトリガーの仕様を事前に確認するようにしたいと思います。
今後の対応
- インストール型トリガーや**onChange(e)**の実装で対応しました
- フィードバックやテストに応じて、プロンプト、RAGなどの見直し
Chatbotによる自動化と、人間FPの実務をスムーズにつなぐためには、今後もさまざまなテストや検証が必要となりそうです。
ここまで多くのブログで開発メモを残しました。お付き合いいただきありがとうございました。
今後の予告
今後は、FP Chatbotのフィードバックがあれば、それに対応していきます。引き続きご覧ください!
SNSシェア&ブックマークも大歓迎!
この記事が参考になった、あるいは同じような悩みを抱えている方がいそうだと思ったら、ぜひSNSでシェアやブックマークをお願いします。小さなテクニックが、大きな効率化につながるかもしれません。
▼「onEdit(e)が反応しない…」2週間の悩みの末、ようやく解決しました。次のステップはどうなるかな?