スプレッドシートに記載されている日にちを判定し、その2週間前になったらslackで通知をするコードを作っております。
そのスプレッドシートには「A」「B」「C」「D」と、4つシートがあり、各シート毎に通知する人物を設定したいと考えております。
function alert() {
var mySheet = SpreadsheetApp.openById('シートID').getSheetByName('A'); //スプレッドシートを取得
var lastRow = mySheet.getLastRow(); //スプレッドシートの最終行を取得
var today = new Date(); //今日の日付を取得
/* 14日切っていたらSlack投稿 */ for (var i = 2; i <= lastRow; i++) { var Di = mySheet.getRange(i, 4).getValue(); //サービス名(Di列)を取得 var dateHi = new Date(mySheet.getRange(i, 8).getValue()); //期限日(Hi列)を取得 var period = dateHi.getDate() - today.getDate(); //今日から期限日までの期間を取得 if (period <= 14) { //2週間前に告知 //通知文を作成 var strText = "@hogehoge " + Di + "の期限です。確認をお願いします。; //Slackへ投稿 postSlack(strText); } }
}
function postSlack(strText) {
//payload
var payload = {
'username' : "Contract Notification",
'text' : strText,
'link_names' : "1", //
};
var options = {
'method' : 'post' ,
'contentType' : 'application/json' ,
'payload' : JSON.stringify(payload),
};
// Webhook URL へPOSTする
var url = 'https://hooks.slack.com/services/XXXX/XXXX/XXXX'; //SlackのIncoming WebHooksのURLを指定
UrlFetchApp.fetch(url, options);
上記のコードを4つ書けばできますが、可能な限り短くまとめたいと思っているのですが、どのようにしたらいいのかご教授頂けますでしょうか。
各シートで通知する人物が違うので、そこのまとめ方が分かりません。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。