tableau public へ 自動 publish

tableau public へ 自動 publish | Tableau-id Press -タブロイド-
auto_pubish
こんにちは。truestar工房の三村です。
最近、Windows デスクトップアプリケーション を自動操作するプログラム作成を楽しんでいます。
今回はその中の Tableau DeskTop を操作して、tableau public へ publish するプログラムをご紹介いたします。

1.tableau public は restapi で publish できない

Tableau Server には、オンプレ環境、tableau online、tableau public の3種類があります。それぞれの Server に公開(publish)するには TableauDeskTopから手動で行うのが普通です。しかし、大量に、定期的に、公開しなければならないとしたら、ちょっと大変ですよね。

そんなとき、オンプレ環境、tableau online には、restapi を使って Server に 公開要求を出すことができます。

が、tableau public は restapi を受け付けていません。ならやっぱり、手動で1個ずつ公開しなければならないのか…と、あきらめかけたのですが、「じゃぁ、せめて手動動作を自動化しよう!」と思いました。

 

2.デスクトップアプリケーションの自動操作

ブラウザの自動操作は Selenium が有名ですが、Windows デスクトップアプリケーションの自動操作については、あまり聞かないですね。そもそも、ニーズがないのでしょうか…?

Windowsデスクトップアプリ用 にも、Selenium のブラウザドライバのようなものが存在します。それが WinAppDriver です。これを起動すると、Element情報を獲得できて、オブジェクトの操作をすることができます。

しかし、マシンを開発者モードにしなければならないとか、自動操作中は ドライバーも起動させておかなければならないとか、制約が結構あります。

そこで今回は WinAppDriver を使わず、win32API を使って作成いたしました。SendKeys を送る…といえば 「あぁ!」という方も多いのではないでしょうか。

windowに対してメッセージを送るには SendKeys() の他に、SendMessage() や SendInput() 等を使います。どの関数を使うかは、メッセージを受け取るプロセスの受信形式に合わせて選ぶ必要があります。そうしないと SendMessageを送ったのに反応しない等で悩みます…。特にAltキーを押しながらの動作がある場合は要注意です。Altキーだけが送られた場合、無視するWindowもあるからです。その場合は SendInput 等で、他のキーもセットにしてメッセージを送信するとうまくいく…かもしれません(絶対!と言えなくてすみません)

3.tableau public へ publish

具体的には、以下の動作を自動化しました。

①TableauDeskTop を開く。

②抽出を更新する。

③ファイルを更新する。

④パブリッシュする。

4.販売のご案内

今回のプログラムは、定期的に tableau public に publish するために作成いたしました。

もし、このプログラムを使ってみたい!という方がいらっしゃいましたら、是非当社までご相談ください。

ご要望に沿ってカスタマイズすることも可能です。

 

5.あとがき

最近はC#で作成することが多かったのですが、今回のプログラムは gcc(C言語)で開発しました。
OpenTableau(tableauを適正なバージョンで開くツール)以来です。
C言語はステップ数が膨らみますが、開発者気分が揚がります。

exeのサイズも小さいですしね♪

では、また。