LoginSignup
0
1

More than 3 years have passed since last update.

GoogleSpreadsheetが更新されたらSlackに通知を送る、基本の形

Posted at

やりたいこと

GoogleSpreadsheetで作った管理表を何人かで共有していて、
ステータス列が変更された時、すぐ通知が欲しいという事ありませんか。

今回、GoogleSpreadsheetの特定の列が更新されたらSlackに通知が飛ぶように、
GoogleAppsScriptを使って実現してみます。

Sheet -_ GAS -_ Slack.png

手順

  1. SlackのIncoming Webhookの設定をする
  2. 対象のSpreadsheetにて、スクリプトを書く
  3. トリガーの設定をする

1. SlackのIncoming Webhookの設定をする

Slackの画面左上の組織名をクリックし、設定と管理→アプリを管理する へ進む。
カスタムインテグレーションからIncoming Webhookをクリック。
image.png

(注意書きにもあるように、カスタムインテグレーションは2020/08時点で非推奨となっていますので、そのうち書き換えます)

Slackに追加をクリック。
image.png

どのチャンネルに投稿させるかを選んで、追加ボタンを押す。
image.png

次の画面に出てくるWebhook URLをメモして、画面下部の「設定を保存する」ボタンを押す。
いったんSlackから離れます。

2. 対象のSpreadsheetにて、スクリプトを書く

Slackに通知を送りたいSpreadsheetを開き、
ツール→スクリプトエディタを開く。
image.png

開いたら以下のコードをコピペ。(後で少し書き換えます)

コード

コード.gs
/**
 新しく値が追加されたときに、Slackにお知らせする関数
*/
function onEdit(e) {
  // 対象のシート名
  const TARGET_SHEET = "list";
  // 対象の列番号 (A=1, B=2,...)
  const TARGET_COLUMN = 5;
  // 対象のSlack webhook URL
  const SLACK_URL = "https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX";

  // 更新したシートとセル
  let sheet = SpreadsheetApp.getActiveSheet();
  let cell = sheet.getActiveCell(); 

  // 対象のシート・列でなければ何もしない
  if (!e || (sheet.getName() != TARGET_SHEET) || (cell.getColumn() != TARGET_COLUMN )) {
    return;
  }

  // Slackに送るテキストメッセージ
  let message = e.user + " さんが " + cell.getA1Notation() + "を更新しました。\n" + e.oldValue + "\n\n" + e.value;

  const OPTIONS = {
    "method": "post",
    "contentType" : "application/json",
    "payload" : JSON.stringify({
      "text" : message
    })
  };
  UrlFetchApp.fetch(SLACK_URL, OPTIONS);
}

↑のコードを、利用状況に合わせて書き換えます。
まずは、TARGET_SHEET, TARGET_COLUMN, SLACK_URLを書き換えてください。
TARGET_COLUMNは、E列の更新を通知したい場合、5、と書きます。
SLACK_URLには、手順1でメモしたURLを書きます。

終わったら保存します。(Ctrl+s または、💾ボタンをクリック)

3. トリガーの設定をする

現時点では、このプログラムは保存されただけで起動するきっかけがありません。
次にするのはトリガーの設定です。

編集→現在のプロジェクトのトリガー、を選択します。
image.png

トリガーを追加、をクリックします。
image.png

イベントの種類を「編集時」に変更します。
その他は変更不要です。
image.png

保存を押したら完了です。
Spreadsheetを変更してSlackに通知がいくかどうか、テストしてみてください。

image.png

おわりに

手順を大幅にすっ飛ばして、動作させるための「基本」のやり方だけ説明しました。
エラーチェックをしたり、メッセージを変えてみたり
カスタマイズを色々と試してくださいね。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1