2013-11-02 45 views
0

我有一個谷歌應用程序腳本,它提供HTML。 它從谷歌電子表格中檢索數據並將其呈現爲html表格。從谷歌電子表格檢索細胞日期到HTML服務

它運作良好,除非有細胞上的日期,我得到的JS控制檯上出現以下錯誤:

Uncaught ScriptError: Se ha ejecutado la secuencia de comandos, pero el tipo de valor que se muestra es incompatible. 

它是在西班牙,而是指:在執行CMD序列,但顯示的數據類型不兼容。

HTML

<script type="text/javascript"> 
$(document).ready(function(){ 
$("#tabs").tabs(); 
google.script.run.withSuccessHandler(fillTabs).getAllTabsData(); 

}); 

</script> 

我認爲這個問題是在這個功能,因爲它在每一個腳本,我實現它失敗:

function fillTabs(tabs) { 
/*Tabs debe ser un array de objetos. cada objeto debe tener, name refiriendose a la pestaña y un array bidimensional con los datos de esa pestaña [rows][columns]*/ 
    var tabsDiv;//=$('#tabs'); 
    var table; 
    var data; 
    console.log("=Array tabs: "+tabs); 
    for (var i = 0; i < tabs.length; i++) { 

    data=tabs[i].data; 
    var tabName=tabs[i].name; 
    console.log("==Procesando: "+tabName); 
    tabsDiv=$('#'+tabName); 
    table='<table class="mytable"><tr>'  

    //iterando columnas primera fila (HEADERS) 
    for(var x=0; x<data[0].length;x++){ 
     table+='<th>'+data[0][x]+'</th>' 
    } 
    table+=' <th width="20%">Action</th></tr>'; //cabeceras fin 

    for(var j=1; j<data.length; j++){//iterando rows. Empezamos en la 1 porque 0=headers 
     table+='<tr id="'+j+'">' 
     for(var k=0; k<data[j].length;k++){//iterando columns 
     table+='<td>'+data[j][k]+'</td>' 
     } 
     table+='<td></td></tr>' 
    } 
    table+='</table/>' 

    tabsDiv.html(table); 
    } 
    $("tr:odd").addClass("odd"); 

}; 

GS

function getAllTabsData(){ 
    var tabNames = getColumnData('Types'); 
    var sSheet =SpreadsheetApp.openById(key); 
    var tabsObject=[]; 

    for(var i=0; i<tabNames.length;i++){ 
    tabsObject.push(
     { name:tabNames[i], 
     data:sSheet.getSheetByName(tabNames[i]).getDataRange().getValues()}); 

    } 
Logger.log(tabsObject); 
    return tabsObject; 
} 

我不不會在GS部分發生任何錯誤,只是在HTML中。 之後的所有JavaScript代碼都未執行。

我檢查了其他類似的腳本,它與日期一起使用。 你可以在這裏看到它 https://script.google.com/macros/s/AKfycbwr9wDJibSknCy4thjj6Hedz8H9NOq2Ren6NLqBUhf6nzVYquFL/exec

唯一的區別是,不返回一個對象數組(如我的),它只返回一個數組。

+0

看起來像一個分而治之的問題。我沒有檢查,但我懷疑「.getValue()」返回一個日期對象http://www.w3schools.com/jsref/jsref_obj_date.asp – eddyparkinson

+0

是的,我懷疑是相同的,但是,我該如何管理它?因爲我甚至沒有可能對JS進行任何轉換。 – Danielo515

回答

0

我不明白爲什麼這不「的deafault」的工作,但我懷疑,JSON做的工作

在服務器端添加JSON.stringify和

JSON && JSON.parse(json) || $.parseJSON(json); 

客戶端工作。

我複製了那行代碼。我理解||之後的部分,但我不明白爲什麼要使用JSON & & JSON.parse。 我想避免嘗試JSON.parse如果JSON不可用。

相關問題