実現したいこと
関数の入ったセルの値が変更された時だけ、メール通知を送りたい
発生している問題・分からないこと
関数の入った特定のセルの値が変更された際にメール通知がくる、まではうまくいったのですが、それからシートの変更はしていなくても、何故か1時間おきにトリガーが実行されるようになりました。
失敗の原因は、「1 日に呼び出されたサービスが多すぎます: 電子メール」です。
同アカウントで複数のシートを作成しており、各々に同様のスクリプトを組んで、トリガーが実行するよう設定しているのですが、これが重複している原因なのでしょうか。
それとも、この1時間おきにトリガーが実行されているのは、何か別の原因があるのでしょうか。
ご教授の程、何卒よろしくお願いいたします。
エラーメッセージ
error
1Exception: Service invoked too many times for one day: email. 2
該当のソースコード
function checkFunctionOutput() { var monitoredSheetName = 'シート名'; // 監視するシートの名前 var monitoredCell = 'H1'; // 監視するセルの座標 // 監視対象のセルの現在の値と前回の値を取得 var currentCellValue = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(monitoredSheetName).getRange(monitoredCell).getValue(); var previousCellValue = ScriptProperties.getProperty('previousCellValue'); // 前回と異なる場合に通知を送信 if (currentCellValue !== previousCellValue) { var notificationMessage = 'シート ' + monitoredSheetName + ' のセル ' + monitoredCell + ' の値が変更されました。新しい値: ' + currentCellValue; sendNotification(notificationMessage); // 現在の値を前回の値として保存 ScriptProperties.setProperty('previousCellValue', currentCellValue); } } function sendNotification(message) { // 通知を送信する処理を実装(メール送信、Slack通知など) // ここに具体的な通知処理を書きます。 // 例: メール送信 MailApp.sendEmail({ to: '自分のアドレス', // 通知先のメールアドレス subject: 'セル変更通知', body: message, }); }
試したこと・調べたこと
上記の詳細・結果
teratailで検索してみましたが、同様の質問が見つかりませんでした。
chatGPTで質問しましたが、最終わからないという答えでした。
補足
トリガーの設定は、以下の通りです。
関数:checkFunctionOutput
スプレッドシートから変更時

0 コメント