是否可以在没有Tableau Server的情况下以编程方式刷新Tableau报表?

时间:2016-03-28 10:46:32

标签: autoit tableau

我有Tableau Desktop 9.2,专业版。我希望能够有一个预定的工作,可以打开工作簿,刷新仪表板,并生成PDF。任何人都可以建议吗?

UPD。吴大方建议我采用this方法。

我当前的AutoIt脚本是

Local $tableaufile = "C:\test.twb"

WinActivate($tableaufile);
WinWaitActive($tableaufile);

Send("!f",0);
Send("D");

WinWaitActive("Print to PDF");
Send("{ENTER}"); Send enter key
WinWaitActive("Save PDF");
Send("test unique name");
Send("{ENTER}");

不幸的是,这不起作用:当我在SciTE脚本编辑器中打开脚本并点击F5时,进程不会退出 - 我必须按Ctrl键 - 并且没有PDF文件。

UPD2。纠正了第一个WinWait调用,并切换到MouseClick - 仍然没有快乐。

Local $tableaufile = "C:\Users\Dimitri Shvorob\Documents\My Tableau Repository\Workbooks\test.twb"
WinActivate($tableaufile);
WinWait("Tableau - test", 10);
Send("!f",0);
Send("D");
MouseClick("Left", 829, 523);
MouseClick("Left", 1248, 690);
WinKill("Tableau - test");

2 个答案:

答案 0 :(得分:0)

在大方的帮助下,我得到了剧本。我之前尝试的一个问题是,这些是为了在工作簿已经打开的情况下运行。 (咄!)

$tableau = "C:\Program Files\Tableau\Tableau 9.2\bin\tableau.exe"

Run($tableau);
WinWait("Tableau - Book1");
Send("!f");
Send("^o");

WinWait("Open");
Send("Graham");
Send("{ENTER}");

WinWait("Tableau - Graham");

Send("!f"); 
Send("D");

WinWait("Print to PDF");
Send("{ENTER}");

WinWait("Save PDF");
Send("Graham Test");
Send("{ENTER}");

WinKill("Tableau - Graham");

答案 1 :(得分:0)

你可以像这样使用TabCmd做同样的事情

tabcmd login -s http://tableauserver -u *user* -p *password*
tabcmd export "Project/Dashboardname?:refresh=yes" --width 1920 --height 1080 --png -f "\\server\path\dashboardname.png"