前提・実現したいこと
スプレッドシートで管理している案件を下記の条件に当てはまる場合、毎日該当のチャンネルへ
セル参照+定型文で通知を送りたいです。
<条件>
・申込締切日が作業日より過去になった場合(例:ライブ開催日 10/1、作業日 10/2)
・該当のステータスである事(09まであるうち、05が対象)
<Slackへ通知された際の希望完成形>
@名前
申込締切日の期日が近づいているか、超過しているので、ご対応をお願いします。 ←定型文
申込締切日 LIVE開催日 開催時間 LIVE名 管理番号 ステータス ←各セル参照
発生している問題・エラーメッセージ
エラーは発生していないですが、Slackへの通知が確認できません。
forやif部分にかなり不安があります。
該当のソースコード
//Slack通知の処理判定 function integration() { var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシート var progressSheet = activeSpreadsheet.getSheetByName("●●●");//参照するシート名 var progressVal = progressSheet.getRange(7,1,progressSheet.getLastRow(),progressSheet.getLastColumn()).getValues(); var activeCell = progressSheet.getActiveCell(); // アクティブセル // 今日の日付を取得 var todayDate = new Date(); var targetDate = new Date(todayDate.getFullYear(),todayDate.getMonth(),todayDate.getDate()); //繰り返し var lpDueDate; var eventStatus; var lpDueDateArray = [[],[]]; for(i=0; i<progressVal.length; i++){ lpDueDate = new Date(progressVal[i][9]); eventStatus = progressVal[i][3]; //ステータスでの処理判定 if (Utilities.formatDate(lpDueDate,'Asia/Tokyo','yyyyMMdd') != "20200401") { if (lpDueDate.getTime() <= targetDate.getTime()) { if (eventStatus == "0_●●●" || eventStatus == "1_●●●" || eventStatus == "2_●●●" || eventStatus == "3_●●●" || eventStatus == "4_●●●" || eventStatus == "5_●●●") { Logger.log("【申込締切日チェック】 " + (i+7) + "行目はステータスが" + eventStatus + "なので処理対象"); lpDueDateArray.push([Utilities.formatDate(lpDueDate,'Asia/Tokyo','yyyyMMdd'),eventStatus]); } else { // デバッグ用 Logger.log("【申込締切日チェック】 " + (i+7) + "行目はステータスが" + eventStatus + "なので処理対象外"); } } else { // デバッグ用 Logger.log("【申込締切日チェック】 " + (i+7) + "行目は申込締切日が" + Utilities.formatDate(lpDueDate,'Asia/Tokyo','yyyyMMdd') + "で先なので処理対象外"); } } } if(activeCell.getColumn() == 3 && activeCell.getValues() >= 0){//作業日当日より過去が対象 //各取得データ var date = progressSheet.getRange(activeCell.getRow(), 9).getValues();//申込締切日 var eventdate = progressSheet.getRange(activeCell.getRow(), 10).getValues();//LIVE開催日 lpDueDateArray.push([Utilities.formatDate(eventdate,'Asia/Tokyo','yyyyMMdd')]);//日本時間へ変換 var opentime = progressSheet.getRange(activeCell.getRow(), 11).getValues();//開始時間 var name = progressSheet.getRange(activeCell.getRow(), 13).getValues();//LIVE名 var taskNo = progressSheet.getRange(activeCell.getRow(), 1).getValues();//管理番号 var status = progressSheet.getRange(activeCell.getRow(), 2).getValues();//ステータス // 送信するSlackのテキスト var slackText = "申込締切日の期日が近づいているか、超過しているので、ご対応をお願いします。\n" + date + eventdate + opentime + name + taskNo + status + "\n" sendSlack(slackText); } } //通知処理 function sendSlack(slackText){ // WebhookのURL var webHookUrl = "https://hooks.slack.com/●●●"; var jsonData = { "channel": "#●●●", // 通知したいチャンネル "text" : "<@●●●>\n" + slackText,//メンションと通知内容 "link_names" : 1, "username" : "●●●"//名前 }; var payload = JSON.stringify(jsonData); var options = { "method" : "post", "contentType" : "application/json", "payload" : payload, }; //Webhook URL宛にAPIのリクエストを送信 UrlFetchApp.fetch(webHookUrl, options); }
試したこと
for文がない場合は通知ができました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/10/05 03:31
2020/10/05 04:43 編集