2013-01-03 53 views
0

我想創建一個簡單的電子表格的圖形表示,但我收到一個錯誤,說'沒有對象類型匹配列的類型'。谷歌圖表對象錯誤

function doGet() { 

    var ss = SpreadsheetApp.openById("xyz"); 

    var data = ss.getDataRange(); 

    var segFilter = Charts.newStringFilter().setFilterColumnIndex(6).build(); 
    var execFilter = Charts.newCategoryFilter().setFilterColumnIndex(7).build(); 

    var tableChart = Charts.newTableChart() 
    .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([1,2,3,4,5,6,7,8,9,10,11,12,13])) 
    .build(); 

    var dashboard = Charts.newDashboardPanel().setDataTable(data) 
    .bind([segFilter, execFilter], [tableChart]) 
    .build(); 

    var app = UiApp.createApplication(); 
    var filterPanel = app.createVerticalPanel(); 
    var chartPanel = app.createHorizontalPanel(); 
    filterPanel.add(segFilter).add(execFilter).setSpacing(10); 
    chartPanel.add(tableChart).setSpacing(10); 

    dashboard.add(app.createVerticalPanel().add(filterPanel).add(chartPanel)); 
    app.add(dashboard); 
    return app; 
} 

我該如何解決這個問題?

回答

1

從谷歌可視化API參考:

每列被分配一個數據類型... 每列中的所有數據必須具有相同的數據類型。

這裏的問題是數據表中的前導空白。在創建DataTable時,列的type從第一行數據中推測出來,然後假定以下所有行都是相同的類型。在您的電子表格中,G2是空白的,導致列類型爲string。但是,G列中的剩餘值是number

Illustration of original spreadsheet

在這個例子中,仍然會有問題去除空白行2後請參閱A3是字符串類型,但A4的型號 - 任何可視化嘗試使用此範圍會抱怨型不匹配。

因此,請確保您不要使用空白值開始任何列,並確保您的類型在列中保持一致,並且您應該沒問題。


從評論其他提示:

  • 你可以改變數據類型的細胞是純文本,或者使用電子表格格式控制,或以編程方式使用setNumberFormat("@[email protected]")。在您不打算將其視爲數字的列中,這樣會很好 - 例如,列L包含文本和數字的混合。但是,如果您正在考慮要繪製的列(例如在折線圖中),那麼轉換爲純文本將是一個壞主意 - 它會阻止您執行可視化。