いまさらですがGASを使わずスプレッドシートの内容をSlackに通知する方法!

みなさん、こんにちは。藤間です!

今回もSlackネタになりますよ!(前回の記事は こちら
先日、「スプレッドシートで管理してるデータをワークフロービルダーでチェックしてSlackに通知できないか」という趣旨の相談がありました。
「できると思います!」と元気に返事しましたが、実際には思い通りに実装できなかったので、いろいろ検討してみましたというお話です!

スプレッドシートのデータをSlackに通知!

スプレッドシートのデータをチェックしてSlackに通知します。少し補足します!

  • 条件に一致するレコードをSlackに通知する
  • 定期的にチェックする

ワークフロービルダーで簡単に実装できそうですね!

完成のイメージ

通知のイメージはこれですね!

データのイメージはこれ!

画像の通り、D列ステータス が 未完了 のデータを Slackに通知できればOKというわけです。簡単そう!

実現するにあたって出てきた課題

試したことがなかったので気づかなかったのですが、以下の課題がありました。

  • 条件に一致するレコード全てを抽出できない
  • 定期的に実行できるけど、1日1回が限界だった

条件に一致するレコード全てを抽出できない

試したことがなかったので気が付かなかったのですが、最初から悩みました。

上記がワークフロービルダーの設定画面です。
スプレッドシートのデータを参照する場合は「Select a spreadsheet row」のステップを追加します。

  1. ファイルを指定
  2. シートを指定
  3. 検索対象のカラムを指定
  4. 抽出したいデータを指定

一致する行を取得して、ワークフロー内で利用できます。
上記の方法では、最初に一致したデータを抽出します。条件に一致するすべてのデータを取得することができませんでした。(できる方法あればこっそり教えてください)

定期的に実行できるけど、1日1回が限界だった。

今回のケースは1日1回で問題ありませんでしたが、1日に複数回実行したい場合は回数分ワークフローを作成する必要があるかもしれません。

実装した方法

GAS(Google Apps Script)は、Googleのサービス上の処理を自動化したり、複数のGoogleサービスや外部のサービスを連携したりできるツールです。
GASを使うことでより良い通知の仕組みを作れると思いますが、今回はエンジニアではない社員からの相談だったので使わない方向で検討しました。

これを、

こう!

お気づきでしょうか。少々手荒な真似をしてしまいました。
ワークフロービルダーのほうで通知文を作成できないのであれば、スプレッドシートのほうに通知文を作っちゃおう!ということです。

  1. Slack通知用のシートを作成
  2. 関数を用いて、データのシートを参照して通知文を作成
  3. Slackワークフロービルダーで、通知文を参照・通知

ステップの設定画面も上記のように変更して、無事スプレッドシート側で作成した通知文を出力することができました。

さいごに

GASや他のツールを利用すれば、より良いかたちで通知する仕組みができると思います。
今回の話は、エンジニアではない社員からSlackを活用する取り組みの相談でしたので、あえてGASを使わないでSlackとスプレッドシートだけで実現できないかを検討してみました。
新しい発見がありとても楽しかったです!