【レシピ集】スプレッドシート編集でSlackに通知する

getSheets
getSheets
ビジネス

便利なGASレシピ集!に戻る場合は以下から

便利なGASレシピ集! – [2020年最新版]

2019年5月22日

はじめに

どうも、ビジボットです。コロナウイルスの影響で在宅ワークが増えている最近、自宅でたくさんのスキルアップを目指して勉強している方が多いと思います。今回の記事はGoogleAppsScript (GAS) を使ってスプレッドシートの編集した列や行を指定してSlackに通知を送る方法を紹介していきます。

簡単に出来ちゃうのでSlackにたくさん情報を送ってみてください。

サンプルコードを実行する

GoogleDriveから「Google Apps Script」だけを選んで以下スクリプト画面を開くのもOKです。スクリプトエディタの開き方がわからない場合はこちらをご確認ください。すぐ出来ます。

GAS初心者が抑えるべきポイント徹底解説!

2019年3月7日
GAS-スクリプトエディタ
GAS-スクリプトエディタ

開いたら以下レシピをコピペします。

GASからSlackに通知するレシピ

Logger.logの結果

送信結果イメージ

Slack通知内容
Slack通知内容
注意

var ch = ‘XXXXXXXXX’には何を入れればいいか?

Slackのチャンネル名、もしくはSlackの「メンバーID」です。
Puclickチャンネル:#から始まる名称を入れます(例)チャンネル名:#bzbot
Privateチャンネル:名称を入れます(例)チャンネル名:bzbot

注意

‘https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’;には何を入れればいいか?

SlackからWebhookURLを取得する必要があります。

WebhookURLの取得

https://slack.com/services/new/incoming-webhook

URLが開くとWebhookURLを作成する画面が表示されるので、進めていきます。

Post to Channel ー ビジボット
Post to Channel – Slack

Post to Channelを指定すると、Webhook URLが生成されます。

その他設定項目です。

WebhookURLを指定 - ビジボット
WebhookURL – Slack

許可を確認とは?

コピペしたコードから、var ch = ‘送信したいチャンネル’を指定して、WebhookURLも取得してvar url = ‘https://~’に指定して実行すると、以下ポップアップが発生します。

これは「許可を確認」と進めてないと送信出来ないので、許可していただいて問題ありません。必ず許可しましょう!

許可を確認
許可を確認

テスト完了日をSlackに通知する

コード自体の動きは、スプレッドシートで「テスト完了日」など特定列に値を入力したタイミングで、Slackに自動通知するコードです。

まず、以下のような操作するスプレッドシートを用意します。
ビジボット-5さんとビジボット-6さんは「テスト完了日」が入ってません。
この「テスト完了日」に値を入れた時に、Slackに自動通知できたら便利ですよね?

テスト完了日をSlackに通知する
テスト完了日をSlackに通知する

テスト完了日をSlackに通知するレシピ

スプレッドシートを開いたら、レシピのコードをスクリプトエディタ画面に貼り付けます。そしてvar ch = ‘送信したいチャンネル’を指定して、WebhookURLも取得してvar url = ‘https://~’に指定します。

トリガーの設定方法

注意

トリガーの設定を絶対しましょう!

スクリプトエディタ画面で、「編集」タブをクリックします。
すると、「現在のプロジェクトのトリガー」という項目があるので、ここをクリックします。

そうすると、新しいタブが立ち上がりトリガー(プログラムが動くタイミング)でどのfunction ~ を実行するか指定することが出来ます。
この場合、スプレッドシートで編集があったタイミング でプログラムが動くように設定します。

以下画面の右下に「トリガーを追加」というボタンがあるのでクリックします。

そしたら、トリガーの設定を以下にして、右下にある「保存」をクリックします。

  • 実行する関数を選択 –> onEdit
  • 実行するデプロイを選択 –> Head
  • イベントのソースを選択 –> スプレッドシートから
  • イベントの種類を選択 –> 編集時

それでは、スプレッドシート側で「テスト完了日」を入力します。
すると、「Slack送信確認」と出てきて、チャンネルに送信しますか?とポップアップができてました。

不要な場合は以下コードを削除すれば確認は不要です。

Browser.msgboxの結果

Slackに通知を飛ばすことができました。
かなり簡易的な情報のみを通知してますが、このコードを使えば様々なカスタムをしてより便利にカスタムすることが可能です。

部分的な解説をします。
以下forの変数:lColには、「名前、テスト完了日」の最終列番号の数値が入ってます。すなわち2が入ってます。
この2という値は列の最後までfor文でループさせながら「テスト完了日」という文字を探して、変数:inputに列番号と同じ値(2)を入れます。

次に、変数:input(2)で取得した値と、変数:colVal(2)の値を比較します。変数:colValには編集があった列の番号が数値が入ってます。

なので、編集した列が変数:colVal(2)で変数:input(2)の「テスト完了日」がある列だけを編集した時にSlackに通知を送るプログラムが実行される仕組みです。

書いてあるけど使ってない変数もあるので、状況によって不要であれば削除したり応用のために使ってください。

便利なGASレシピ集!に戻る場合は以下から

便利なGASレシピ集! – [2020年最新版]

2019年5月22日