2015-12-30 32 views
1

我有一个电子表格格式化为带有标题的表格,我想使用Google Visualization Query API将它读入JS。当数据类型混合时从Google电子表格访问数据

var query=new google.visualization.Query(url); 
query.send(handleGoogleResponse); 
... 

function handleGoogleResponse(response) { 
    var data=response.getDataTable(); 
... 

一切运作良好时,场均纯文本格式,但如果其中一个是时间戳格式,数据变得靠不住。有没有办法强制查询以字符串形式返回未格式化的数据?我试过的格式和选择性条款

回答

0

原来,当标题行与下面列中的数据类型不同时,Google会以不同方式处理表格的“形状”。

这似乎为这两种情况下工作:

var query=new google.visualization.Query(url); 
query.send(handleGoogleResponse); 

function handleGoogleResponse(response) { 
    var i,j,o,lab; 
    var keys=[]; 
    var theData=[]; 
    var data=response.getDataTable(); 
    var cols=data.getNumberOfColumns(); 
    var rows=data.getNumberOfRows() 
    var hasLabels=data.getColumnLabel(0) ? true : false; 

    for (i=0;i<cols;++i) { 
     if (hasLabels) 
      lab=$.trim(data.getColumnLabel(i)); 
     else  
      lab=$.trim(data.getFormattedValue(0,i)); 
     if (!lab) 
      break; 
     keys.push(lab); 
     var s=hasLabels ? 0 : 1; 
     for (i=s;i<rows;++i) { 
      o={}; 
      for (j=0;j<keys.length;++j) 
       o[keys[j]]=data.getValue(i,j); 
      theData.push(o);  
      } 
} 
0

在谷歌电子表格的网站,在您的工作表:

  • 选择列
  • 格式 - >数值 - >纯文本

现在该列的数据类型应该是字符串。

+0

肯定。但是当我通过JS加载数据时我想这样做。我的用户并不总是这么做... –

+0

您所请求的服务器必须使用正确的格式进行响应,请参阅此处的参考: https://developers.google.com/chart/interactive/docs/reference#dataparam –

+0

我很欣赏链接,但这适用于手动构建的表格,而不是从Google驱动器导入的表格。我确实找到了解决问题的方法(请参阅下面的答案) –

相关问题