JavaScriptのAPIを使用して問題をタブローグラフの現在のビューステートを復元:私は保存することができますどのように保存と
- し、後で検索 - タブローのカスタム状態はJavaScript APIを介して見ますか?
説明:
私たちは現在、すべてのユーザーが後で使用するためのパワーポイントのようなオンラインプレゼンテーションにタブロービューのセットをコラボレートすることができ、サイト上で働いています。現在の実装では、Tableauグラフの状態は保存されないので、ユーザはいつでもプレゼンテーションを保持しながら、必要なフィルタを適用したり、ワークシートを選択したりする必要があります。これは今私たちが避けたいものです。
これの最も簡単な解決策は、下部バーインターフェイスからアクセスされる「共有」リンクの1つを保存して取得することです。これらのリンクには現在のビューの状態が含まれていますが、これまでにはこれを行うことができませんでした。まず、ドメインの問題により、単純に埋め込みコードiframeから共有リンクを取得できません。第2に、APIメソッドworkbook.getUrl()には現在のビューの状態が含まれていないようです。
私はcurrenty workbook.rememberCustomViewAsync(名)に可能な解決策のように見えるとworkbook.showCustomViewAsync(名)方法を探しています。しかし、これらの2つの方法のいずれかから賢明な結果を得ることはできません。両方を実行すると、あいまいで非有益な500のエラーが発生します。
例えば、ファイル、およびエラー:
良好この問題を例示するために、私は、上述した第2の方法を使用しようと最小demo(以下スニペット)を作成しました。 Google Chromeで開くと、2つのボタン(「保存状態」と「検索状態」)のどちらも私のために機能せず、開発者ツール(http応答メッセージと開発者コンソール出力それぞれ)に次のエラーが表示されます。
HTTPレスポンス:
<br>
2015-11-11 16:14:17.916
(VkNpWQrCQaIAACQo2YYAAAPi,0,0)
コンソールエラー:
POST http://public.tableau.com/vizql/w/Book6_426/v/YRKE/save_customized_view/sessions/208A699D34E14708A2268AA10A827C99-0:0 500 (Internal Server Error)
、誰もがいずれかのまきによって、私はこの問題を解決する方法を知っています提供されたコード例の作業(記述された第2の方法)、または他の手段を介してどんな助けもありがとう!
PS:ここでスニペットシミュレータは、Access-Control-Allow-Originエラーを引き起こします。このファイルはhereにも公開されています。
<html>
<head>
<title>A simple Tableau API demo</title>
<!--script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<!--script type="text/javascript" src="https://online.tableau.com/javascripts/api/tableau_v8.js"></script-->
<script type="text/javascript" src="https://online.tableau.com/javascripts/api/tableau-2.min.js "></script>
</head>
<body>
<H2>Custom view storage demo</H2>
<button id="remember-button">
Remember state 'test'
</button>
<button id="retrieve-button">
Retrieve state 'test'
</button>
<div id="viz-placeholder" style="width: 1000px; height: 1000px; display: block;"></div>
<script>
// Render tableau graph
function initializeViz() {
var placeholderDiv = document.getElementById("viz-placeholder");
var url = "https://public.tableau.com/views/Book6_426/YRKE";
var options = {
width: placeholderDiv.offsetWidth,
height: placeholderDiv.offsetHeight,
hideTabs: true,
hideToolbar: true,
onFirstInteractive: function() {
workbook = viz.getWorkbook();
activeSheet = workbook.getActiveSheet();
}
};
viz = new tableau.Viz(placeholderDiv, url, options);
}
$(initializeViz)
// Assign and set up button actions for storing and retrieving the custom view
var customViewName = "test";
$('#remember-button').click(function() {
console.log("Remembering: ", customViewName);
// Try to save state, or print error
viz.getWorkbook().rememberCustomViewAsync(customViewName).otherwise(function(err) {
console.log("An error occured:");
console.log(err);
});
});
$('#retrieve-button').click(function() {
console.log("Retrieving: ", customViewName);
// Try to retrieve state, or print error
viz.getWorkbook().showCustomViewAsync(customViewName).otherwise(function(err) {
console.log("An error occured:");
console.log(err);
});
});
</script>
</body>
</html>
ねえ、質問があります。私は、カスタムビューが1つのワークブック内のすべてのダッシュボードで共有されていることを知っています。ワークブック1のダッシュボード1から同じフィルタを使用してワークブック2のダッシュボード2にカスタムビューを適用する方法はありますか? –
@DeepanshuKalra、私はそれを手伝ってくれるのではないかと心配しています。公式サポートフォーラムに質問を投稿することをお勧めします。彼らは結局私を助けました! –