公開日: 2024/03/19
最終更新: 2024/03/19
参考資料
- Tableau Public API
- Google Apps Script - GmailApp
本記事は前回の Fitbitのデータを可視化する の続きとして書いています。
前回の記事でFitbitおよびOpen Meteoのデータを使用した、週次と日次のダッシュボードを作成しました。 データもTableau Publicで日次更新されているため、ダッシュボードも日次などの頻度で定期配信をし、Tableau Publicに毎日アクセスしなくてもデータを確認できるようにしたいです。
この記事では各ダッシュボードをメールにスケジュール配信する方法について記載します。
この記事では以下のダッシュボードを例として扱います。 https://tabsoft.co/3Tk8P8u
免責事項
今回紹介するスクリプトは、個人利用の範囲での利用を想定しています。
ChatGPT 3.5と会話しながら作成したスクリプトです。また著者はスクリプト開発/プログラミングを専門としていません。ご了承ください。
Tableau Public上のVizをメール配信する
Google Apps ScriptとTableau Public APIを使用して実装した方法を紹介します。
以下が用意されていれば実行できます。
Googleアカウント(Gmail送信用、GAS実行用など)
任意のGoogle Driveフォルダ
Tableau Publicアカウント
最初にGoogle Driveに任意のフォルダを作成し、画面上で右クリック→以下画像のように新規のプロジェクトを作成します。
作成されたGoogle Apps Scriptプロジェクトに、以下のスクリプトをコピペします。
このスクリプトでは、あるTableau Public上のVizをメール配信します。
初期設定として、以下を使用するGoogle Driveフォルダや送信先、使用するTabelau Publicのビューに合わせて変更します。
// Tableau Public user ID and workbook name
const userID = "YOUR_TABLEAU_PUBLIC_ID";
const workbookName = "YOUR_WORKBOOK_NAME";
// Set Daily/Weekly View to Email
const viewName = "YOUR_VIEW_NAME";
// Google Drive folder ID and file name for saving
const folderId = "YOUR_GOOGLE_DRIVE_FOLDER_ID";
const fileName = "IMAGE_NAME.png";
// Recipient and subject settings
const recipientEmail = 'YOUR_EMAIL_ADDRESS';
const subject = 'EMAIL_SUBJECT';
例えば今回の例では、対象のビューのTableau PublicのURLは以下のため
https://public.tableau.com/app/profile/yoshitaka6076/viz/DailyWellnessTrackerwithFitbitData2/DailyHighlight
userID = "yoshitaka6076"
workbookName = "DailyWellnessTrackerwithFitbitData2"
viewName = "DailyHighlight"
となります。 メール送信したいビューのURLに合わせて変更ください。 folderIdは作成したGoogle Driveフォルダから、fileName、recipientEmail、subjectは適当に設定ください。
設定後、関数vizSubscription ()を手動実行してみると、以下のようなメールが指定したメールアドレスに届きます。
メールが届くことを確認したら、定期実行の設定を行います。 (参考: Google Apps Script 入門 - トリガー)
以上でTableau PublicのVizを定期的にメール送信することができました。 ちなみに、もしメール本文を変更したい場合は、関数emailVizImage()のmailTextを修正ください。
Tableau Publicのデータ更新に関するTips
ところでメール送信を定期的に行うのであれば、Tableau PublicのVizも定期的にデータ更新されている必要があります。 データ更新を許可するためには以下3つを実施する必要があります。
Google Driveコネクタを使用する
Tableau Desktop Public Editionからパブリッシュする
パブリッシュ時に認証情報を埋め込む
2について、Tableau Desktop(有償版)からもTableau Publicにパブリッシュ自体は出来るのですが、データの定期更新が何故かオンになりません。
(認証情報がパブリッシュ時に埋め込まれていれば、Tableau Public上での手動更新はできます) この辺りの内容は以下にまとめて下さっているので、併せてご確認ください。
3について、当然ですがTableau Publicからのデータ更新を許可するために、認証情報を埋め込む必要があります。 パブリッシュ時に以下のチェックボックスを確認ください。
なおTableau Server/Cloudと異なり、データの更新時刻は任意のものを設定できず、(恐らく)初回パブリッシュ時に割り振られたスケジュールを使用します。
これは設定項目として確認できるものではなく、Workbook所有者のみ確認できるデータ更新日時を確認しました。
(確認時には、Tableau Publicのサインイン状態を確認ください)
以下の例では、手動更新を3/18 正午に行っていないことから自動更新スケジュールの時間帯が正午であることを確認できます。
したがってメール配信スクリプトの実行スケジュールは13時に設定しています。
実験した限り、新規パブリッシュ時に付与されるWorkbook IDごとにスケジュールがそれぞれ抽選されているようでした。 どうしても特定の時間帯に更新させたい場合は抽選を頑張っても良いかもしれませんが、個人的にはお勧めしません...
ということで、Tableau Public上の日時でデータ更新されるVizを、Google Apps Scriptで定期的にメール配信できるようになりました。 ちなみに似たような話を以下の記事でも書いていますので、ご興味あればご確認ください。
最後に
今回はFitbitのダッシュボードを例としましたが、本質的には日次更新以下での頻度でよいデータを扱うVizであれば何でも良いので、昨今何かと話題の投資Vizなどでも良いかもですね。
ダッシュボードを作って自分で運用してみる経験値にもなると思いますので、ご興味あればぜひチャレンジしてみて下さい。
質問などありましたら、XかLinkedinまでお願いします。