スプレッドシートのデータをSlackに通知する処理を書いたのでメモです。このようなスプレッドシートがあったとして、日付が今日だったらその行の項目1と項目3の内容をSlackに送ってみます。スケジュールに仕掛けておくことで毎朝Slackに通知することもできます。

ツール -> スクリプトエディタ を開いてスクリプトファイルを登録する。
スクリプトファイル コピペ用("//編集"はそれぞれの環境で編集が必要)
function checkCell() {
// スプレッドシートを指定(URLからコピペする)
var spreadsheet = SpreadsheetApp.openById('xxxxxxxxxxxxx') //編集
//シートの名前を指定する
var sheet = spreadsheet.getSheetByName('管理表1'); //編集
//今日の日時を取得する
var today = new Date()
//console.log(today); //Sat Jun 20 2020 01:14:58 GMT+0900 (日本標準時)
var string = "";
//必要な列のデータを配列で取得していく。getValues()を使って配列でvaluesXに入れる。
//日付の列を取得する。
var rangeA = sheet.getRange("A:A");
var valuesA = rangeA.getValues();
//項目1の列
var rangeB = sheet.getRange("B:B");
var valuesB = rangeB.getValues();
//項目3の列
var rangeD = sheet.getRange("D:D");
var valuesD = rangeD.getValues();
//valuesA[1][0]やvaluesA[2][0]にデータが入っているのでforをネストさせている
for (var i = 0; i < valuesA.length; i++) {
var date = "";
for (var j = 0; j < valuesA[i].length; j++) {
date = valuesA[i][j];
//MomentjsのisSameで日付が同じかどうか(今日かどうか)を判定。日付が今日ならstringに代入する。
if ( Moment.moment(today).isSame(date,'day')) {
string = string + ('\n') + " 項目1は " + valuesB[i][j] + "です。" + " 項目3は " + valuesD[i][j] + "です。"; //編集
}
}
}
//stringが空だったら何もしないで終わる。
if ( !string ) {
return ;
}
//stringに何か入っていたらSlackに送信する関数を実行する。
sendSlackMessage(string);
}
// Slackへ送信するfunction
function sendSlackMessage(message) {
var postUrl = 'https://hooks.slack.com/services/xxx/xxx/xxxxxxxx' //編集
var jsonData =
{
"text" : "*今日の予定*" + message //編集
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
SpreadsheetApp.openByIdに入れたIDはURLのマスクしている部分
日付の処理を扱うライブラリMoment.jsを使ったのでインストールする。ここを参考にしました。
https://tonari-it.com/gas-moment-js-moment/
スクリプトID: MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48
インストールしたら手動実行してみる(checkCellを選んで▶をクリック)。最初は権限の許可が必要なので許可する。
Slackにこんなふうに送られてきたのでとりあえずOKとします。
[時間主導型]でタスクに登録しておけば定期的に通知もできる。
