前提
スプレッドシートにて、「オンライン連絡対象」と記載されている場合のみ、
slackにシフトの連絡をする、というプログラムを作成中です。
発生している問題
こちらのサイトを確認しながら
if (formatClosingDay === remindDate && status !== '完了') の部分を if (status === 'オンライン連絡対象') このように書き換えたのですが、 「オンライン連絡対象」だけではなく、すべてのシフトが通知されてしまう状態です。 「オンライン連絡対象」と記載されている場合のみ、slackにシフトの連絡が届くように修正したいです。
該当のソースコード
function taskRemind_2() { // シート取得 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('shift_import'); // ループ数定義 const firstRow = 2; const lastRow = sheet.getLastRow(); // アラート対象日フォーマット const date = new Date(); for(var i = firstRow; i <= lastRow; i++) { // ↑2行目〜最後の記載がある行を取得してる_↓下からは各項目取得 var title = sheet.getRange('G' + i).getValue();//セッション名の取得 var contactPerson = sheet.getRange('K' + i).getValue();//担当者の取得 var startingDay = sheet.getRange('B' + i).getValue();//開始時刻の取得 var formatClosingDay = Utilities.formatDate(startingDay, 'JST', 'MM/dd HH:mm~'); var status = sheet.getRange('M' + i).getValue();//リマインド対象かのジャッジ // リマインド時 if (status === 'オンライン連絡対象') { var postUrl = '--Slack Webhook URL--'; var message = `【リマインダー】開催まであと2時間です!\n■セッション名:${title}\n■担当者:${contactPerson}\n■開催日時:${formatClosingDay}` var payload = JSON.stringify({ "text" : message }) var options = { method: 'post', contentType: 'application/json', payload: payload } UrlFetchApp.fetch(postUrl, options); } } }
補足情報(FW/ツールのバージョンなど)
読み込み先のスプレッドシートの列構成は以下の通りです。
A | B | C | E | D | F | G | H | I | J | K | L | M | N | O |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
連番 | 開催日時 | 終了日時 | ユーザーID | セッションID | 開催拠点 | セッション名 | セッションキー | 公開状態 | 申し込み人数 | ユーザー名 | 役割名 | 運営連絡送信 | シフト確認OK? | アラート発動! |
飛んで以下セルには関数が入っています
- R1:=now()
- R2:=$R$1+time(1,0,0)
- R3:=$R$1+time(2,0,0)
- R4:=$R$1+time(3,0,0)
- M2:=if(and(B2>$R$1,$R$3>B2,F2="オンライン"),"オンライン連絡対象",if(and(B2>$R$1,$R$4>B2,REGEXMATCH(F2,"拠点")),"拠点連絡対象","連絡対象外"))
↑こちらを投稿後、以下の編集をしてみて無事にslackに通知が飛ぶようになったのですが、
このようなエラーが出てしまっている状態です。
どのように修正すればエラー解消できるでしょうか・・
Exception: The parameters (String,String,String) don't match the method signature for >Utilities.formatDate.
taskRemind_3 @ コード2.gs:64
function taskRemind_3() { // シート取得 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('shift_import'); // ループ数定義 let firstRow = 2 let lastRow = sheet.getLastRow() // アラート対象日フォーマット let date = new Date() for(let i = firstRow; i <= lastRow; i++) { // 各項目取得,一旦うまくいった構文残しておくね let title = sheet.getRange('G' + i).getValue() let contactPerson = sheet.getRange('K' + i).getValue() let closingDay = sheet.getRange('B' + i).getValue() let formatClosingDay = Utilities.formatDate(closingDay, 'JST', 'yyyy/MM/dd HH:mm~') let status = sheet.getRange('M' + i).getValue() // リマインド時 if (status !== '連絡対象外') { let postUrl = 'https://hooks.slack.com/services/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' let message = `【リマインダー】今日が納期です!\n■依頼タイトル:${title}\n■担当者:${contactPerson}\n■納期:${formatClosingDay}` let payload = JSON.stringify({ "text" : message }) let options = { method: 'post', contentType: 'application/json', payload: payload } UrlFetchApp.fetch(postUrl, options) } } }
回答1件
あなたの回答
tips
プレビュー