実現したいこと
Googleスプレッドシートで、
特定の列に特定の文字列が入力されていたらトリガーでメール通知したい。
(特定のセルに文字入力ではないです)
前提
右のURL(https://teratail.com/questions/cbm7rb5o15ar9r )を参考に組みました。
※追記:アクティブについて知識が無かったため、おかしなスクリプトになっています※
「スプレッドシート上での表示が"残り●営業日"になったらメール通知」を行いたいため、
="残り"&NETWORKDAYS($H$1,G2)&"営業日"
でH1(TODAY)とF2(予定日)を引っ張って「残り●営業日」と表示されるようにしています。
(実際には祝日も計算に入れたかったため、隣のシートから2年分の祝日も引っ張ってきています。)
発生している問題・エラーメッセージ
エラーは起こらず、デバックでもエラーが見つけられず、実行されたことになります。
ですが実行を行った場合でもメールが来ません。
毎日朝7時~8時に設定したトリガーもエラーなく実行履歴がありますが動きません。
該当のソースコード(修正版)
GoogleAppSscript
1function NotificationMail(){ 2 3const recipient = 'めるあど'; //通知を飛ばす先のgメールアドレス 4const subject = '3営業日前です';//通知タイトル 5const body = + '※本メールは●●のリマインド通知です※\n'; 6const options = { name: '通知' }; 7const ss= SpreadsheetApp.openById('シートのIDを入力');// 現在のSpreadSheetを取得 8const mySheet = ss.getSheetByName('シート名を入力'); // シート(SpreadSheetの下のタブ名を指定) 9 10SpreadsheetApp.getActiveSpreadsheet().getSheetByName("シート名を入力").activate(); 11var myCell = mySheet.getRange("I:I"); // 12if(myCell.getValue()=='残り3営業日'){ //B列に入力があったか判定 13 14GmailApp.sendEmail(recipient, subject, body, options);//通知メールを送信 15} 16}
試したこと
まず数式を読み取れていないのではないかと疑い、
特定文字列を直接入力したところ通知メールが来たり来なかったりするなど再現性があやふやでした。
あやふやなのはメール送信数の制限に引っかかったとのではないかと、
残数を確認できるLogerを実行しましたが1500と余裕がありました。
数式を読み取るため、参考URLではgetValueでしたが、
シートに表示されている文字列で読み込んでもらおうと
getDisplayValueに変更しましたがダメでした。
getDisplayValueでも余計な装飾があるのが原因かと、
=NETWORKDAYS($H$1,F2)
と数式を削って「3」を条件に変更しても同じでした。
数式を組んだ場合はうまくいかないものなのでしょうか。
どなたかお知恵を貸して頂ければ幸いです。
●読み取りたいスプレッドシートのイメージ図です
検索列は質問投稿時はB列(数式)でしたが、今はI列(値のみ貼り付け)を指定しています。
数式が原因ではないと問題を分けたいからです。
毎日自動的にB列をJ列に値のみ貼り付けするスクリプトを組みました。

回答2件
あなたの回答
tips
プレビュー