Googleスプレッドシートの変更をSlackへ通知する方法

GoogleスプレッドシートをSlackに通知

こんにちは、Xtoneの松本です。
Google Sheets(スプレッドシート)でタスク管理や試験管理をする際、シートが更新されたらSlackへ通知したいと考える方は少なくないと思います。本記事では、非エンジニアでも簡単にGoogleスプレッドシートの変更内容をSlackへ通知できる方法を紹介します。
※所用時間:約10分〜15分

Googleスプレッドシートの特定の列の表記の変更をSlackへ通知する

今回は以下のようなタスク表を想定し、特定の列が変更された場合にSlackへ通知を送るような仕組みを作ります。今回はステータスを管理する「H列」が任意のステータスに変更された場合に通知が飛ぶようにします。

Slackチャンネルへ通知されるイメージは以下の通りです。

事前に準備しておくもの

事前に準備をしておくものは以下の3つだけです。

それでは、具体的な設定方法の説明に入ります。

1. SlackにWebhookをインストールする

はじめに、SlackにWebhookをインストールします。
手順は下記の通りです。

  • SlackのWEBサイトから「Incoming Webhook」をみつけます
  • 「Slackに追加」します(※Slackにログインしている必要があります)

  • 更新の通知を受け取りたいSlackチャンネルを選び、「Incoming Webhook インテグレーションの追加」を押します

  • Webhook URLが表示されるので、コピーして手元に控えておきます(※後で使います)

  • 画面の下の方にスクロールし、設定を保存します

以上でWebhookの設定は完了です。

2. Googleスプレッドシートを用意する

通知を受け取りたいGoogleスプレッドシートを用意します。

はじめに、列を作る

どのようなフォーマットでも問題ありませんが、以下の3種類の列を作成し、それぞれの列番号を控えておいてください。列番号は「アルファベット」ではなく「番号」で控えてください。
(A列=1、B列=2、C列=3…といった具合です)

記載内容
ID タスクのID
内容 タスクの内容
ステータス タスクのステータス

通知を受け取りたいステータスを決める

ステータスの列がどのステータスになったら通知を送りたいか、を決めておきます。
例えば今回の例では「対応中」「対応済み」「完了」のステータスに変わった際に通知を受け取りたい想定としてあります。

Google Apps Script(GAS)に記述する

さぁ、いよいよスクリプトを書きます。

  • まず、Googleスプレッドシートのメニュー「拡張機能」から「Apps Script」を選びます

  • コードエディタが開いたら、予め記載されている内容(function myFunction〜)をすべて削除します

  • 以下のコードを丸ごとコピーし、貼り付けます
  • プログラムの上部に記載されている以下の内容を、あらかじめ控えておいた内容に書き換えます

※以下は記載例です

上記の記載が終わったら、スクリプトの準備は完了です。

トリガーを追加する

トリガーを追加します。

  • 左のメニューから「トリガー」を選択します

  • 右下の「トリガーを追加」をクリックします

  • 各項目を以下のように設定し、「保存」します

  • Googleの認証画面が表示されるので、認証するアカウントを選択します

  • アカウントへのアクセスを「許可」します

以上で全ての設定は完了です。

試しにステータスを変更してみる

試しに、一つのタスクのステータスを「完了」に変更してみます。

きちんとSlackの指定したチャンネルに通知が飛んでいました。

まとめ

最近では、さまざまなツールをSlackに統合して、通知を中心にした効率的な作業とコミュニケーションが一般的になっています。そのような中で、GoogleスプレッドシートがSlackへの通知を行えないことは唯一のストレス要因でした。逆に、これが実現できるようになることで、Googleスプレッドシートの活用範囲の拡大が期待できます。この記事では、基本的な内容の通知方法を紹介しましたが、さらに発展的なカスタマイズを探求してみても面白いと思います。

たとえば、

  • 「特定の担当者」に向けて、「特定のステータス」になったら通知する
  • タスクが特定の人に割り当てられた場合、通知メッセージにその人へのメンションを追加する

など、より便利で効率的な通知システムはいくらでも考えられます。

また機会があれば、そうしたカスタマイズ版を別の記事で紹介できればと思います。