📑
Googleスプレッドシートに変更があったらslackに通知するGoogle Apps Script
備忘録
検索すれば新旧たくさんの記事がヒットしますが、そんな凝ってなくていいよーっていう自分用記事です。
たくさんあるので前提となる部分は大幅に割愛してます……。
Webhookの設定
まずはslackに通知を飛ばすためにWebhookの設定をします。
今回はこちらのサイトを参考に設定しました。ありがとうございます。
【GAS】Googleスプレッドシートを更新したらSlackに通知させる仕組みを作ってみた
コード(sendSlack.gs)もほとんどそのまま使ってます。
コード
変更を検知するonEditと、slackに通知するsendSlackの2つだけのシンプル構成。
onEdit.gs
function onEdit(e) {
const newValue = e.range.getValue();
sendSlack(newValue);
}
sendSlack.gs
/////////////////////////////////////////////////
// sendSlack:slackに更新通知を送信 //
////////////////////////////////////////////////
function sendSlack(slackText){
// slackにて追加したWebhook URLを設定
const webHookUrl = "https://hooks.slack.com/services/~~~~";
const jsonData =
{
// "channel": "#general", // 通知したいチャンネル(自身にダイレクト送信する場合はコメントアウト)
//'icon_url': "https://entershare.jp/wp-content/uploads/2017/11/unnamed.png",
"text": slackText,
"link_names": 1,
"username": "notification"
};
const payload = JSON.stringify(jsonData);
const options =
{
"method": "post",
"contentType": "application/json",
"payload": payload
};
// リクエスト
UrlFetchApp.fetch(webHookUrl, options);
}
トリガーの設定
実行する関数を選択:onEdit
イベントのソースを選択:スプレッドシートから
イベントの種類を選択:編集時
このような設定で変更された値をslackへの通知ができました。
変更行が複数あった場合などは考慮していません。
変更時に通知を飛ばすだけならトリガーのイベントの種類を変更時にするだけで事足りるんですよね。
ただ、まあメッセージ固定でこんな通知画面見ても……ね……… 😅
Discussion