首页 > 解决方案 > 如何将 Google Visualization API 的日期列转换为 JSON 格式

问题描述

以下是我创建来自谷歌电子表格的数据表的方法。

 var params = { 
    valueRenderOption: "UNFORMATTED_VALUE",
    spreadsheetId: '15WX-5oiu54oiu35oi3u4o5o34iu5ou43oiu534',
    range: 'Sheet2!A:H', // Retrieve the values of "A:H".
  };
      var request = gapi.client.sheets.spreadsheets.values.get(params); 
  request.then(function(response) {
         var values = response.result.values.map(function(e) {return [e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7]]}); // Added
    var w = new google.visualization.ChartWrapper({dataTable: values}); // Added

    var dataTable = w.getDataTable();

     dataTable.setColumnProperty(2, 'role', 'tooltip')
     dataTable.setColumnProperty(3, 'role', 'style')
     dataTable.setColumnProperty(4, 'date', 'Start'); 
     dataTable.setColumnProperty(5, 'date', 'End');
     dataTable.setColumnProperty(2, {type: 'string', role: 'tooltip', p: {html: true}});

 ......

如何将第 6 列(indexColumn5)的列属性指定为日期?

如果我创建一个图表包装器,它会失败并显示错误“第 6 列不是日期”。

var chartwraprange = new google.visualization.ControlWrapper({
controlType: 'DateRangeFilter',
containerId: 'controldaterange',
dataTable:dataTable,
options: {
  filterColumnIndex: 6,

   'ui': {
                'label': '',
                 format:{pattern: "MM-dd-yyyy"},
         },    
         }
         });

标签: javascriptarraysjsongoogle-visualization

解决方案


  • 您要检索e[5]var values = response.result.values.map(function(e) {return [e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7]]})日期对象。
    • e[5]是“F”列。

如果我的理解是正确的,那么这个修改呢?在此修改中,我修改了您的脚本。因此,请将此视为几种解决方案之一。

修改后的脚本:

在此修改中,作为序列号检索的日期值将转换为 unix 时间和日期对象。请在您的脚本中反映以下修改。

从:

var values = response.result.values.map(function(e) {return [e[0], e[1], e[2], e[3], e[4], e[5], e[6], e[7]]});

至:

var values = response.result.values.map(function(e) {return [e[0], e[1], e[2], e[4], new Date((e[5] - 25569) * 86400 * 1000), e[6]]});

参考:

如果我误解了你的问题,我很抱歉。


推荐阅读