TableauレポートをGASでSlackに自動連携する方法


はじめまして、Classiの企画の小坂井です。
この記事では、GoogleAppScript(GAS)を使って、TableauレポートをSlackに連携する方法を紹介します。

きっかけ

KPIとなる数値を、チームでウォッチしてアクションに繋げていく文化を作りたいと思ってました。
Classiでは、Tableauというデータを可視化できるツールを使っていますが、わざわざオンラインで開いて見る人は限られています。そのため、Tableauレポートをチームメンバーが一番確認しやすいSlackに連携することで、数値を見る文化を醸成できるのでは思い実施しました。

手順

  1. 連携したいTableauレポートを選択しサブスクライブ機能を使って、自分のGmail宛に定期配信します
  2. GASファイルにコードをコピペします
  3. コードの4箇所を置き換えます
  4. 投稿させるSlackBotをチャンネルに招待する
  5. 動作が問題ないか、GASの画面で実行ボタンを押下して確認します GASファイルのトリガーを設定します(毎週月曜9時など)

GASファイルをGoogleDriveから新規作成します

GoogleDriveの新規ボタン押下後、その他からGASファイルを作成できます

作成すると下記画面が表示されます。

GASファイルに下記コードをコピペします

先ほどのGASファイルの中に、以下のコードをコピペします。

Slack連携用GASソースコード

function myFunction() {
  //Tableauからの自動メール取得(条件に一致する最新のメールを一件取得)
  var Threads = GmailApp.search('from:"[email protected]" subject:"[メールタイトル]"', 0, 1);
  var messages = Threads[0].getMessages();
  var message = messages[messages.length-1];

  //自動メールから画像と日付を取得
  var attachments = message.getAttachments();
  var date = message.getDate();
  var time = Utilities.formatDate( date, 'Asia/Tokyo', 'yyyy年M月d日');

  //slackAPI
  var SLACK_TOKEN='[TokenID]';
  var data = {
  'token':SLACK_TOKEN,
  'file':attachments[0],
  'filename': time + "KPIレポート",
  'channels':'[Slackチャンネル名]',
  'title':time + 'KPIレポート',
  'initial_comment': '[コメント]'
  };
  var option = {
  'method':'POST',
  'payload':data
  };
  UrlFetchApp.fetch('https://slack.com/api/files.upload',option);
};

コードの4箇所を置き換えます

  • [メールタイトル]
    • サブスクライブするTableauレポートのメールのタイトルに置き換えます。
  • [TokenID]
    • 投稿させるSlackBotのトークンIDに置き換えてください。(IDの確認はこの記事参照)
  • [Slackチャンネル名]
    • 連携したいチームのSlackチャンネル名に置き換えてください。(#は不要です)
  • [コメント]
    • Tableauレポートの画像合わせて送りたいメッセージを自由に記載ください。

投稿させるSlackBotをチャンネルに招待する

該当チャンネルで以下を入力し、Botを招待してください。
/invite @bot

動作が問題ないか、GASの画面で実行ボタンを押下して確認します

動作に問題ないか▶︎実行ボタンを押下します。

GASファイルのトリガーを設定します(毎週月曜9時など)

定期配信するために、時計マークのボタンを押下し、配信時間を設定します。

まとめ

この結果、定期的にSlackにTableauのレポートを連携できるようになりました。以下のようにKPIとなる数値が簡単に見ることできるので、スレッドの中で議論が起きるなどの行動にも繋がりました。
連携するKPIレポート自体がアクションに繋げられない質のものだと意味はないですが、この取り組みを通して、前進できている気がします。