📑

Googleスプレッドシートに変更があったらslackに通知するGoogle Apps Script

2022/07/06に公開

備忘録

検索すれば新旧たくさんの記事がヒットしますが、そんな凝ってなくていいよーっていう自分用記事です。
たくさんあるので前提となる部分は大幅に割愛してます……。

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への通知ができました。  
変更行が複数あった場合などは考慮していません。


変更時に通知を飛ばすだけならトリガーのイベントの種類を変更時にするだけで事足りるんですよね。
ただ、まあメッセージ固定でこんな通知画面見ても……ね……… 😅
通知。が並んだslackのスクリーンショット

Discussion