2013-05-23 3 views
0

Я полностью новичок в сценариях приложений и пытаюсь создать простой скрипт TableChart в приложении из таблицы Google. Я продолжаю получать ошибку «Тип объекта не соответствует типу столбца», и я не могу понять, как пройти мимо него, несмотря на попытки найти все решения, которые я могу найти в Интернете. Код у меня есть:Сценарий Google Apps - Тип объекта не соответствует типу столбца

function doGet() { 
var ss = SpreadsheetApp.openById('0AkEJIKjP5Q4LdFh1ZjJOUF9BQ0J2YUNwVm50eGEyTEE'); 
var sss = ss.getSheetByName('Customer Updates'); 
var data = sss.getDataRange(); 

var referenceFilter = Charts.newCategoryFilter().setFilterColumnIndex(29).build(); 

var tableChart1 = Charts.newTableChart() 
       .setDimensions(900, 100) 
         .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([29,1,28,30,48])).build(); 

    var tableChart2 = Charts.newTableChart() 
       .setDimensions(900, 100)         
        .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([31,32,33,34,36])).build() ; 

var tableChart3 = Charts.newTableChart() 
       .setDimensions(900, 60) 
        .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([37])).build(); 

var tableChart4 = Charts.newTableChart() 
       .setDimensions(900, 60) 
        .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([38])).build(); 

    var tableChart5 = Charts.newTableChart() 
       .setDimensions(900, 60) 
       .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([39])).build(); 

var tableChart6 = Charts.newTableChart() 
       .setDimensions(900, 60) 
       .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([40])).build(); 

var tableChart7 = Charts.newTableChart() 
       .setDimensions(900, 60) 
       .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([41])).build(); 

var tableChart8 = Charts.newTableChart() 
       .setDimensions(900, 60) 
       .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([42])).build(); 

var tableChart9 = Charts.newTableChart() 
       .setDimensions(900, 60) 
       .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([43])).build(); 

var tableChart10 = Charts.newTableChart() 
       .setDimensions(900, 60) 
       .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([44])).build(); 

var tableChart11 = Charts.newTableChart() 
       .setDimensions(900, 60) 
       .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([45])).build(); 

var tableChart12 = Charts.newTableChart() 
       .setDimensions(900, 60) 
       .setDataViewDefinition(Charts.newDataViewDefinition().setColumns([46])).build(); 

var dashboard = Charts.newDashboardPanel().setDataTable(data) 
       .bind([referenceFilter], [tableChart1,tableChart2,tableChart3,tableChart4,tableChart5,tableChart6,tableChart7,tableChart8,tableChart9,tableChart10,tableChart11,tableChart12]) 
       .build(); 


var app = UIApp.createApplication(); 
var filterPanel = app.createHorizontalPanel(); 
var chartPanel1 = app.createHorizontalPanel(); 
var chartPanel2 = app.createHorizontalPanel(); 
var chartPanel3 = app.createHorizontalPanel(); 
var chartPanel4 = app.createHorizontalPanel(); 
var chartPanel5 = app.createHorizontalPanel(); 
var chartPanel6 = app.createHorizontalPanel(); 
var chartPanel7 = app.createHorizontalPanel(); 
var chartPanel8 = app.createHorizontalPanel(); 
var chartPanel9 = app.createHorizontalPanel(); 
var chartPanel10 = app.createHorizontalPanel(); 
var chartPanel11 = app.createHorizontalPanel(); 
var chartPanel12 = app.createHorizontalPanel(); 

filterPanel.add(referenceFilter).setSpacing(7).setHeight(10); 
chartPanel1.add(tableChart1); 
chartPanel2.add(tableChart2); 
chartPanel3.add(tableChart3); 
chartPanel4.add(tableChart4); 
chartPanel5.add(tableChart5); 
chartPanel6.add(tableChart6); 
chartPanel7.add(tableChart7); 
chartPanel8.add(tableChart8); 
chartPanel9.add(tableChart9); 
chartPanel10.add(tableChart10); 
chartPanel11.add(tableChart11); 
chartPanel12.add(tableChart12); 

    dashboard.add(app.createVerticalPanel().add(filterPanel).add(chartPanel1).add(chartPanel2). add(chartPanel3).add(chartPanel4).add(chartPanel5).add(chartPanel6).add(chartPanel7).add(ch artPanel8).add(chartPanel9).add(chartPanel10).add(chartPanel11).add(chartPanel2)); 
app.add(dashboard); 
return app; 

} 

Там ошибка в строке вар приборную панель = Charts.newDashboardPanel() setDataTable (данные)

Любые идеи.?

+0

Возможный дубликат http://stackoverflow.com/questions/14132295/google-charts-object-error. – Mogsdad

ответ

2

В вашей таблице вы должны гарантировать, что для каждого столбца все значения имеют одинаковый тип. Вы не можете начинать с текста в первых строках, чем на другом месте в нем (или наоборот).

Вы также можете нормализовать все на своем скрипте, например.

var data = sss.getDataRange().getValues(); 
var dataTable = Charts.newDataTable(); 
for(var j in data[0]) 
    dataTable.addColumn(Charts.ColumnType.STRING, data[0][j]); 
fpr(var i = 1; i < data.length; ++i) 
    dataTable.addRow(data[i].map(String)); 

var dashboard = Charts.newDashboardPanel().setDataTable(dataTable); 

Здесь я просто вынудил все на строку, я думаю, вы поняли, нужна ли вам колонка NUMBER.

+0

Спасибо Henrique. Работал. –

Смежные вопросы