実現したいこと
当日の日付にあった当番をSlackに通知する
詳細
スプレッドシートに記載してある「日付」「名前」「当番内容」「担当時間」から、日付が当日の日付とマッチした場合にSlackに通知するbotをつくっています。
2023/03/28 さとう そうじ 9:00
2023/03/29 たなか せんたく 10:00
2023/03/28 いとう せんたく 11:00
上記のようなデータがスプレッドシートにあり、当日の日付が「2023/03/28」の場合、Slackには2行通知されるとおもいますが、「Utilities.formatDate」の「"JST","HH:mm"」と指定しているとエラーになります。
フォーマットを指定しない場合エラーはでませんが、下記のように2行目だけが正常に通知され1行目はフォーマットされてないデータでSlack通知されてしまいます。
2023/03/28 さとう そうじ Sat Dec 30 1899 09:00:00 GMT+0900 (Japan Standard Time)
2023/03/28 いとう せんたく 11:00
1行目も2行目も正しい時間表記で通知するにはどうしたら良いのでしょうか?
発生している問題・エラーメッセージ
エラーメッセージ Exception: The parameters (String,String,String) don't match the method signature for Utilities.formatDate.
該当のソースコード
GAS
1function myFunction() { 2 3 var webhook = "https://hooks.slack.com/xxxxxx"; 4 5 var today = new Date(); 6 var date = today.getFullYear() + '年' +(today.getMonth() + 1) + '月' + today.getDate() + '日'; 7 8 var spread_sheet = SpreadsheetApp.openByUrl('https://docs.xxxxxxxxxxxxx'); 9 var target_sheet = spread_sheet.getSheetByName("xxxxxxxxxxxxx 10 var data_arrays = target_sheet.getDataRange().getValues(); 11 var message = ""; 12 var num=0; 13 14 data_arrays.forEach(function( data_array ){ 15 cell_date = new Date(data_array[0]); 16 if(cell_date.getFullYear() == today.getFullYear() && cell_date.getMonth() == today.getMonth() && cell_date.getDate() == today.getDate()) 17 { 18 for (var i = 1; i <= 1; i++) { 19 start_time = data_array[0*i]; //日付 20 start_time2 = data_array[1*i]; //なまえ 21 start_time3 = data_array[2*i]; // 掃除内容 22 start_time4 = data_array[3*i]; // 時間 23 if(start_time != ""){ 24 time_text = start_time 25 message += Utilities.formatDate(start_time,"JST","MM/dd") + start_time2 + start_time3 + Utilities.formatDate(start_time4,"JST","HH:mm") + "\n"; 26 } 27 } 28 num++; 29 return false; 30 } 31 }) 32 33 var jsonData = {"username": "おしらせbot", "text": message}; 34 var payload = JSON.stringify(jsonData); 35 var options = 36 { 37 "method" : "post", 38 "contentType" : "application/json", 39 "payload" : payload 40 }; 41 42 // 1件もない時は通知しない処理をいれる 43 if ( num != 0 ) { 44 UrlFetchApp.fetch(webhook, options); 45 } 46}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/03/28 10:50
2023/03/28 10:54
2023/03/28 12:48