##はじめに
GAS勉強中です。
まとめてここのサイトにアップしているのでよかったらみてください。
【ビジボット】https://bzbot.work
【記事レシピ】https://bzbot.work/2019/05/22/gas-recipe/
##本題
今回はGASでSlackに通知するプログラムのレシピを書きました。
スプレッドシートを編集したときや特定操作をした時にSlackにそのまま通知が遅れたらいいなって思って作成。
詳細→https://bzbot.work/2020/04/25/gas-slack/
特定列だけを編集したときに実行されるように作ってます。
あと、カスタムで使えるように使ってない変数もちょこっとあります。
GAS
/*トリガーについて
*実行する関数を選択:onEdit
*イベントの種類を選択:編集時
*/
function onEdit(e) {
var oldVal = e.oldValue; //変更前の値
var newVal = e.value; //変更後の値
var sheet = e.source.getActiveSheet(); //変更があったシート
var range = e.source.getActiveRange(); //変更があったセル
var rowVal = range.getRow(); //変更があった行
var colVal = range.getColumn(); //変更があった列
var postItem = sheet.getRange(rowVal,1).getValue(); // Slackに送りたい値
var lCol = sheet.getLastColumn();
var input = '';
var Ch = 'XXXXXXXXX';
var val = '';
for (i = 1; i <= lCol; i++){
val = sheet.getRange(1,i).getValue();
if(val === 'テスト完了日'){
input = i;
};
};
//Browser.msgBox('onEdit関数の中にある...' + 'input:' + input + 'rowVal:' + rowVal + 'colVal:' + colVal);
if(input === colVal){
var result = Browser.msgBox('Slack送信確認',"チャンネルに送信しますか?", Browser.Buttons.OK_CANCEL);
if(result == "ok"){
sendToSlack(postItem,rowVal,Ch);
};
};
}
function sendToSlack(Item,row,ch) { //引数にセットされた値をこっちの変数に入れる
var url = 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; //送信する為のWebhookURI
var body = '<!here>' + '\n' +'`テストが完了!!!!`'+ '\n' + '名前:' + Item; //送信するメッセージ
var data = { 'channel' : ch, 'username' : 'ビジボット', 'text' : body};
//Browser.msgBox('sendToSlack関数の中にある...' + 'Item:' + Item + 'と' + 'ch:' + ch);
var payload = JSON.stringify(data);
var options = {
'method' : 'POST',
'contentType' : 'application/json',
'payload' : payload
};
var response = UrlFetchApp.fetch(url, options);
}