2014-10-26 57 views
0

我目前正在研究通過JavaScript API從Tableau報表中獲取數據的可能性,但是我可以通過過濾器選擇值後從圖中獲取值selectSingleValue()方法。Tableau JavaScript API - 獲取所選值

例如:JavaScript API Tutorial

在所謂的 '選擇' 的API教程標籤。其中一個例子選擇「Marcao Sao,China」這一行。是否有可能提取$ 52.0k的數值?

我試圖尋找對象返回(通過FireBug),但我似乎無法找到正確的對象。我最近的位置在getActiveSheets()中。

任何幫助,將不勝感激。

回答

1

在JavaScript API教程選項卡'Events'中,它向您展示瞭如何添加事件偵聽器來返回選定的標記。然後你可以遍歷這些標記來獲取你想要的值。

將下面的代碼塊複製到一個文件中,另存爲html並在您最喜歡的Web瀏覽器(在ie11上測試)中打開。

<html> 
<head> 
<meta charset="utf-8"> 
<title>Tableau 8 Javascrip API</title> 
<script type="text/javascript" src="http://public.tableausoftware.com/javascripts/api/tableau_v8.js"></script> 
<script type="text/javascript"> 
///////////////////// 
// Global variables 
var viz, workbook, activeSheet 

// function called by viz on marks being selected in the workbook 
function onMarksSelection(marksEvent) { 
    return marksEvent.getMarksAsync().then(reportSelectedMarks); 
} 

function reportSelectedMarks(marks) { 
    for (var markIndex = 0; markIndex < marks.length; markIndex++) { 
     var pairs = marks[markIndex].getPairs(); 
     for (var pairIndex = 0; pairIndex < pairs.length; pairIndex++) { 
      var pair = pairs[pairIndex]; 
      if (pair.fieldName == "AVG(F: GDP per capita (curr $))") { 
       alert("You selected a country with an avg GPD per capita of " + pair.formattedValue); 
      } 
     } 
    } 
} 


// Initialise the viz to hold the workbook 
function initializeViz(){ 
    var placeholderDiv = document.getElementById("tableauViz"); 
    var url = "http://public.tableausoftware.com/views/WorldIndicators/GDPpercapita?Region="; 
    var options = { 
      width: "800px", //width: placeholderDiv.offsetWidth, 
      height: "400px", //height: placeholderDiv.offsetHeight, 
      hideTabs: true, 
      hideToolbar: true, 
      onFirstInteractive: function() { 
       workbook = viz.getWorkbook(); 
       activeSheet = workbook.getActiveSheet(); 
      } 
    }; 
    viz = new tableauSoftware.Viz(placeholderDiv, url, options);  
    // Add event listener 
    viz.addEventListener(tableauSoftware.TableauEventName.MARKS_SELECTION, onMarksSelection); 
} 
</script> 
</head> 
<body> 
<!-- Tableau view goes here --> 
    <div id="tableauViz" style="height:1200px; width:1200px"\></div> 
    <script type='text/javascript'> 
    //Initialize the viz after the div is created 
    initializeViz(); 
    </script> 
</body> 
</html>