Slack ワークフロービルダーの新しいトリガー(日時/Webhook)を使ってみよう!


はじめに

ワークフロービルダーの新機能が2020/02/12にリリースされました
追加機能の概要と、簡単な使い方をまとめておきます!
前回投稿したワークフロービルダーの基本的な解説はこちら

追加機能(3点)

新しいトリガーが2点と、追加機能が1点リリースされました。

新しいトリガー(スケジュールされた日付と時間)
 特定の日または定期的なワークフローをスケジュール起動する機能

新しいトリガー(Webhook)
 外部システムまたはツールからSlackのワークフローを起動する機能

新しい機能(フォームデータをCSVとしてダウンロード)
 ワークフロービルダーのフォームから収集した回答をCSV形式でダウンロードできる

注意事項
Webhookトリガーや、フォームデータをCSVとしてダウンロードするためには
事前にワークスペース管理者が権限設定を行う必要があります。

新しいトリガー(スケジュールされた日付と時間)

もう1つ追加された新しいトリガーです。こちらは解説するまでもなく直観的に使える機能だと思います。
/remind などで繰り返しメッセージを設定するのもひとつですが、定期的なフォーム入力の催促などを
ワークフローとして実現したい場合には活用できそうな気がします。

今回フォーム入力データがCSVダウンロードできるようになったので相性もいいですね。

新しいトリガー(Webhook)

サンプルとして、新しいトリガー(Webhook)を、GoogleAppsScriptから利用する場合の手順を書いていきます。
なお、今回追加されたWebhookは、従来から提供されているIncoming Webhookに相当する機能です。
Incoming Webhookの仕様はあわせて公式リファレンスをご確認ください。

(1) 適当な名前で新しいワークフローを作成します。

(2) トリガー設定に、今回追加されている機能が表示されています。Webhookを選択してください。

(3) Incoming Webhookで受け取る変数を追加します。変数を追加するを選択してください。

(4) 変数を追加します。今回はサンプルでtextを追加します。データタイプはテキストを選択してください。

データタイプにはテキスト以外にも、以下の中から選ぶことが可能です。
-テキスト
-Slackユーザーのメールアドレス
-SlackユーザーID

(5) Webhookが登録された状態です。この時点ではWebhookURLが発行されていません。

(6) ステップを追加しメッセージを送信を選択してください。

(7) メッセージの送信先を選択し、メッセージのテキストには変数を挿入するをクリックし、(4) で作成した変数textを指定します。

(8) ワークフロービルダーの準備はこれで完了です。右上の公開するをクリックします。

(9) Webhook用のURLが新規発行されます。

(10) GoogleAppsScriptで新規スクリプトを作成します。
サンプルコードのpayloadの部分に、(4)で設定したワークフロービルダーの変数の値を設定します。

sample.js
function sample(){

  //ワークフロービルダーで作成したWebhookURLを設定
  webhookurl = 'https://hooks.slack.com/workflows/XXXXXXXXX/XXXXXXXXX/000000000000000000/XXXXXXXXXXXXXXXXXXXXXXXX';

  //ワークフロービルダーで設定した変数の値を設定
  var payload = {
    'text' : 'Hello World!',
  };

  //HTTPリクエストを送信
  var params = {
    'method' : 'post',
    'payload' : JSON.stringify(payload)
  };
  var response = UrlFetchApp.fetch(webhookurl, params);

  var content = response.getContentText("UTF-8");

}

(11) サンプルコードを実行してメッセージが表示されれば完成です!🎉

新しい機能(フォームデータをCSVとしてダウンロード)

ワークフロービルダーの編集画面右上にある「...」から、フォーム形式で回答をダウンロードするを押すだけです。

ファイルダウンロード準備が整うと、SlackBotからユーザー宛にダウンロードURLが通知されます。

さいごに

今回Incoming Webhookに対応されたことで、GSuiteや他SaaSサービスとの連携がやりやすくなりました。
Slackを呼び出す側は、JSON形式で値を渡す必要があるため、多少プログラミングスキルは求められますが
ユーザーのSlackを活用したアイデアを形にしやすくなったと思いますし、非常に良いアップデートだと思います。
これからもワークフロービルダーには追加機能の実装が期待されるところですね。

以上