Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 日期列的arrayToDataTable的替代方案_Date_Google Apps Script_Google Sheets_Google Visualization - Fatal编程技术网

Date 日期列的arrayToDataTable的替代方案

Date 日期列的arrayToDataTable的替代方案,date,google-apps-script,google-sheets,google-visualization,Date,Google Apps Script,Google Sheets,Google Visualization,我是stackexchange的新手,因此,如果这个问题太广泛,或者已经在我找不到的地方得到了回答,我深表歉意。您可以找到电子表格、脚本和仪表板(dev版本) 几天来,我一直在用谷歌应用程序脚本可视化处理日期 我的最终目标是制作一个仪表板,其中包括带注释的时间线以及基于电子表格中数据集的其他图表。我已经使用创建一个三层google可视化仪表板开始了这个过程,其中数据从外部电子表格中提取,然后使用arrayToDataTable提取到数据表中。一切都是开箱即用的。但是,我的数据包含日期,因此我在原

我是stackexchange的新手,因此,如果这个问题太广泛,或者已经在我找不到的地方得到了回答,我深表歉意。您可以找到电子表格、脚本和仪表板(dev版本)

几天来,我一直在用谷歌应用程序脚本可视化处理日期

我的最终目标是制作一个仪表板,其中包括带注释的时间线以及基于电子表格中数据集的其他图表。我已经使用创建一个三层google可视化仪表板开始了这个过程,其中数据从外部电子表格中提取,然后使用arrayToDataTable提取到数据表中。一切都是开箱即用的。但是,我的数据包含日期,因此我在原始数据中添加了一个日期列,但是arrayToDataTable不接受日期类型。因此,当添加日期列时,我得到以下结果:

ScriptError:脚本已完成,但返回的值不是 支持的返回类型

我尝试了多种方法来确保日期格式的一致性:选项包括通过
newdate(dateColumn[I])
dateColumn[I].toJSON()
(呈现仪表板,但无法处理日期),在电子表格中强制使用日期格式(yyyy-MM-dd),使用上面文章中概述的数据视图(仪表板无法通过“加载”),等等

所以我的问题是,在这种三层方法中,什么是arrayToDataTable的替代方案可以接受日期列?或者,以下方法中有哪些错误

对于尝试添加列的所有情况,我已将代码从
var data=google.visualization.arrayToDataTable(response,false)
更改为
var data=google.visualization.DataTable()

我尝试了以下方法:

  • 手动添加列和手动添加数据(不工作)

  • 自动添加不带日期的行(添加行,但仅当没有日期列时才有效)

    //添加行
    对于(var i=1;i,您可以使用Query(
    google.visualization.Query
    )类从电子表格中提取数据,
    这将正确转换日期列

    google.charts.load('current'{
    套餐:[“表”]
    }).然后(函数(){
    变量queryURL=https://docs.google.com/spreadsheets/d/1aaxYNLCuPz3o3TA1jdryenUP01Qbkdaut4AR5eIhe9s/edit#gid=0';
    var query=new google.visualization.query(queryURL).send(函数(响应){
    var data=response.getDataTable();
    //显示列类型
    对于(var i=0;i
    
    
    您可以使用Query(
    google.visualization.Query
    )类从电子表格中提取数据,
    这将正确转换日期列

    google.charts.load('current'{
    套餐:[“表”]
    }).然后(函数(){
    变量queryURL=https://docs.google.com/spreadsheets/d/1aaxYNLCuPz3o3TA1jdryenUP01Qbkdaut4AR5eIhe9s/edit#gid=0';
    var query=new google.visualization.query(queryURL).send(函数(响应){
    var data=response.getDataTable();
    //显示列类型
    对于(var i=0;i
    
    
    很抱歉,我太快点击了enter。非常感谢您的回答。我怀疑这是我需要进入的方向。但是,我不确定如何实际实现它。我的脚本文件中有4张表,其中两张与此相关,分别是code.gs和my javascript.html。您建议的查询似乎会进入javascript文件中,但我相信Mogsdad创建了不同的表单,以阻止访问仪表板后面的电子表格,并且只发送“响应”对于javascript文件。你能提供一些关于实现的更多指导吗?谢谢,所以我最终成功了,基本上放弃了现有示例中的大部分代码。为了避免访问底层电子表格,我创建了一个中间电子表格,查询从中提取,中间电子表格en从源代码中提取,但只能公开信息。很抱歉,我单击enter太快。非常感谢您的回答。我怀疑这是我需要进入的方向。但是,我不确定如何实际实现它。我的脚本文件中有4张表,与此相关的两张是code.gs,然后是我的javascript.html。您建议的查询似乎会出现在javascript文件中,但我相信Mogsdad创建了不同的表单,以阻止访问仪表板后面的电子表格,并且只发送“响应”对于javascript文件。你能提供一些关于实现的更多指导吗?谢谢,所以我最终成功了,基本上放弃了现有示例中的大部分代码。为了避免访问底层电子表格,我创建了一个中间电子表格,查询从中提取,中间电子表格en从源头获取信息,但只能公开信息。
    //Add Columns 
    data.addColumn('string','Name');
    data.addColumn('string','Gender');
    data.addColumn('number','Age');
    data.addColumn('number','Donuts eaten');
    data.addColumn('date','Last Donut Eaten');
    
     //Add Rows
     data.addRows([
       ['Miranda','Female', 22,6,6],
       ['Jessica','Female',22,6,12],
       ['Aaron','Male',3,1,13]
     ]);
    
     //Add Rows
     for (var i=1; i<response.length; i++) {
       data.addRow(response[i]);
     }
    
    for (var i=0; i<response[0].length; i++) {
      if (response[1][i] instanceof Date) {  //Checks if first value is Date
        data.addColumn('date',response[0][i]);
      };
      else if (response[1][i] instanceof Number)  //Checks if first value is Number
        data.addColum('number',response[0][i]);
      else data.addColumn('string',response[0][i]; //Otherwise assume string
      };