前提・実現したいこと
スプレッドシートで期日アラートメールを送信するシステムを作っています。
全くの初心者でwebからソースコードをコピーし、必要な箇所を書き換えて使用しており、
以下のエラーメッセージが発生しました。
ただ、コードを手動で実行すると、期日が過ぎた項目が正常にメールで届くのは届いているのです。
GASの本などで調べてみたのですが、基本的な事を分かっていない状態です。
期日が過ぎた時にアラートメールが届き、エラーを解決したいです。
解決方法をご教授願えませんでしょうか。
発生している問題・エラーメッセージ
以下が設定したgoogleアカウントに届くエラーメッセージです。
該当のソースコード
function mailAlerts() {
//シートを取得
var bk = SpreadsheetApp.getActiveSpreadsheet();
var sh = bk.getActiveSheet();
var last_row = sh.getLastRow(); //最後の行を取得(繰り返し処理の回数)
var begin_row = 2; // 処理を開始する行 (1行目は項目名なので2から)
//今日の日付を取得し文字列を成型する
var today = new Date();
var formatDate = Utilities.formatDate(today,"JST","yyyy/MM/dd");
//繰り返し処理(1行づつ処理し、行の数だけ繰り返す)
for(var i = begin_row; i <= last_row; i++) {
//それぞれのセルの中身を取得していく
//通知期日(日付は成型する)
var sell1 = "B"+i;
var value1 = sh.getRange(sell1).getValue();
var value1 = Utilities.formatDate(value1,"JST","yyyy/MM/dd");
//進捗状況
var sell2 = "C"+i;
var value2 = sh.getRange(sell2).getValue();
//施設名
var sell3 = "D"+i;
var value3 = sh.getRange(sell3).getValue();
//定期メンテナンス内容
var sell5 = "F"+i;
var value5 = sh.getRange(sell5).getValue();
//実施日
var sell6 = "H"+i;
var value6 = sh.getRange(sell6).getValue();
//もし、今日の日付と納期が同じで、なおかつ状況が完了でない場合メールを送る
if(formatDate == value1 && value3 !== "完了"){
GmailApp.sendEmail('※ここにはメールアドレスを入力しています',
'【定期メンテ通知】施設名:' + value2 + '/' + value5,
'■施設名:' + value3 + '\n■定期メンテナンス内容:'+ value5 + '\n■実施日:'+ value6);
}
}
}
試したこと
webで調べたところ、(String,String,String)のエラーは文字が間違っているかと思い、
var formatDate = Utilities.formatDate(today,"JST","yyyy/MM/dd");
の箇所のtodayの後ろに空白が入っていたので削除しました。
ただ、削除する際に半角か全角かは確認しませんでした・・・
しかし、解決せずエラーになります。
補足情報(FW/ツールのバージョンなど)
MacでGASを入力しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/11 00:27