0

HTML を提供する Google Apps スクリプトがあります。Google スプレッドシートからデータを取得し、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;
}

HTML だけで、GS 部分でエラーは発生しません。それ以降のすべての JavaScript コードは実行されていません。

他の同様のスクリプトを確認したところ、日付で機能します。ここで確認できます https://script.google.com/macros/s/AKfycbwr9wDJibSknCy4thjj6Hedz8H9NOq2Ren6NLqBUhf6nzVYquFL/exec

唯一の違いは、(私のように) オブジェクトの配列を返さず、単一の配列のみを返すことです。

4

1 に答える 1