GASで期限をスプレッドシートからSlackに通知する【その4】
今回はいよいよコードを書いていきます。
この記事はどんな人向け?
GAS初心者がスプレッドシートをもとにbotで期限をSlack通知した際、ここが困ったなーという部分が結構あったので、そのあたりを軸にまとめてみました。
そのため、同じく初心者で困っている人向けの記事です。
どういった通知をしたいか
まず、どういったスプレッドシートの表の期限をbotで通知させたいかですが、
私が作りたかったものは以下のような備品の返却予定日でした。
利用者のいない備品があったり、返却予定日が未定な状態の人がいたりという表から
返却予定日のあるものだけ、返却予定日になったら
管理番号と使用者をbotでSlackに通知させたいというものでした。
上記のような表を通知するには空白をスキップさせるためのIF関数が発生するので
初心者が一気にやるにはあまり向いていないかなと思います。
(私自身がどこでつまずいたのかわからない状態に陥ったので・・)
そのため、一旦返却予定日(期限)に空白がない場合を想定したコードを組んでみるといいと思います!
期限の決まった備品やタスクを通知させる
以下の表の返却予定日になったら、「管理番号」と「使用者」をSlackに通知するようにコードを書いていきます。
「管理番号」や「使用者」には、「タスク」と「担当者」など別の項目をいれても大丈夫です!
コードにしか用はない方もいると思うので、さくっとまずはコードだけ載せちゃいますね。
function sendSlack(text) {
var token = PropertiesService.getScriptProperties().getProperty('SLACK_ACCESS_TOKEN'); // トークンを取得
var channel_id = PropertiesService.getScriptProperties().getProperty('channel_id'); // チャンネルIDを取得
var url = "https://slack.com/api/chat.postMessage"; // slackに投稿するメソッドの呼び出し
// 投稿内容
var payload = {
"token" : token,
"channel" : channel_id,
"text" : text
};
var params = {
"method" : "post",
"payload" : payload
};
// Slackに投稿する
UrlFetchApp.fetch(url, params);
}
function alertDate() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); //アクティブシート取得
var sheet = ss.getSheetByName("備品管理"); // シートを指定
// ループ数定義
var firstRow = 2; // スプレッドシートの2行目から
var lastRow = sheet.getLastRow(); // 最終行を習得
// アラート対象日フォーマット
var date = new Date(); // 日付を習得
var remindDate = Utilities.formatDate(date, 'JST', 'yyyy/MM/dd'); // 今日の日付を文字列に
for(var i = firstRow; i <= lastRow; i++) {
// 各項目取得
var number = sheet.getRange('A' + i).getValue();
var person = sheet.getRange('B' + i).getValue();
var closingDay = sheet.getRange('C' + i).getValue();
var formatClosingDay = Utilities.formatDate(closingDay, 'JST', 'yyyy/MM/dd'); // C列の返却予定日を文字列に
// アラート内容
if (formatClosingDay === remindDate){ // remindDateとformatClosingDayが一致するなら
var text = "今日が返却予定です\n>>>管理番号:" + number + "\n使用者:" + person + "\n返却予定日:" + formatClosingDay; // 通知内容
sendSlack(text); // sendSlack関数にtextを送る
}
}
}
コードはこちらの方を参考にさせていただきました
Google Apps ScriptからSlackにリマインド通知を送る – NoCodeFreaks
ライブラリを設定する
コードだけ見ている人にも必ずやってほしいのですが
今回書いているコードはライブラリによって簡略化しています。
ライブラリとは、自分の書いた関数をスクリプトにすることで
さらにみんなに公開してくれているものを今回は使用します。
スクリプトは前回設定しましたが、ライブラリで公開されているものは
tokenやチャンネルIDなどのような文字列ではなく、関数をスクリプトにしてくれています。
GASで期限をスプレッドシートからSlackに通知する【その3】 - TAKANASHI'S BLOG
今回はSlackAppさんのライブラリを使用したコードになるので
SlackAppというライブラリを読み込まないとbotが投稿できません。
なので、さっそくライブラリを追加しましょう!
ライブラリを追加するためには、ライブラリの「+」の部分をクリックします。
スクリプトIDを入力し、SlackAppというライブラリを検索します。
スクリプトID:1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq
検索出来たら、追加をクリックしてライブラリを追加してください。
バージョンは22が最新のようなので、22のままで大丈夫です。
これでfunctionを実行すればSlackに期限をbotで投稿できるようになりました。
次回からはコードの詳しい内容を見ていきます!
コードの説明はいらん!実行を試させろ!って人はこちらをどうぞ!
前回