Charts.newDataTable() 不适用于日期

Posted

技术标签:

【中文标题】Charts.newDataTable() 不适用于日期【英文标题】:Charts.newDataTable() not working with Dates 【发布时间】:2019-11-25 13:56:24 【问题描述】:

在 Google Ads 脚本中,我正在尝试创建一个基本折线图,如下所述: https://developers.google.com/apps-script/reference/charts/line-chart-builder

我要绘制图表的数据是 Date X Clicks。

我可以使用来自 Google Ads 的数据生成图表,但是,日期 被格式化为 字符串,而不是图表中的实际日期,这会导致其他问题。

例如,此代码将处理我的数据,但将日期格式化为图表中的字符串:

var dataBuilder = Charts.newDataTable();  
dataBuilder.addColumn(Charts.ColumnType.STRING, 'Date');
dataBuilder.addColumn(Charts.ColumnType.NUMBER, 'Clicks');

当我尝试这段代码时,它不起作用:

var dataBuilder = Charts.newDataTable();  
dataBuilder.addColumn(Charts.ColumnType.DATE, 'Date');
dataBuilder.addColumn(Charts.ColumnType.NUMBER, 'Clicks');

我试图从这里转换日期数据: ["2019-09-27",75],["2019-09-29",102],["2019-9-30",112]

对于这样的事情: ["new Date(2019,9,27)",75],["new Date(2019,9,29)",102],["new Date(2019,9,30)",112]

根据我在这里找到的文档:https://developers.google.com/chart/interactive/docs/datesandtimes

但这似乎不起作用。

有什么建议吗?

【问题讨论】:

不,"Date(2019,9,27)" 不起作用。我收到以下错误 - “对象类型与列类型不匹配。” 【参考方案1】:

最后,我能够通过将 Google Ads 数据导出到 Google 表格,然后将该表格读回 Google Ads 中的图表来解决这个问题。

我做了这样对我有用的事情:

function BuildChart(myMetric, ssName) 

  //Load the spreadsheeet
  var sheet = ss.getSheetByName(ssName);

  //Grab all the data in the sheet
  var data = sheet.getRange('A1:B29').getValues();

  //Start Building the data table
  var dataTable = Charts.newDataTable();

  dataTable.addColumn(Charts.ColumnType.DATE, data[0][0]);
  dataTable.addColumn(Charts.ColumnType.NUMBER, data[0][1]);

  //Add rows
  for(var j=1; j<data.length; j++)
    Logger.log(data[0][1] + ':' + data[j])
    dataTable.addRow([data[j][0],data[j][1]]);
  

  //Create and build chart
  var chartBuilder = Charts.newLineChart()
      .setDataTable(dataTable)
      .setTitle(myMetric + ' over the past 28 days')
      .setXAxisTitle('Date')
      .setYAxisTitle(myMetric)
      .setDimensions(850, 350)
      .setOption('legend.position', 'none')
      .setOption('trendlines', 'type':'linear','color':'purple')
      .setCurveStyle(Charts.CurveStyle.NORMAL)
      .setPointStyle(Charts.PointStyle.MEDIUM);      

  var chart = chartBuilder.build();

  return chart;


【讨论】:

以上是关于Charts.newDataTable() 不适用于日期的主要内容,如果未能解决你的问题,请参考以下文章

为啥元类适用于类属性但@classmethod @property 不适用?

JavaScript 箭头函数:适用与不适用场景

WEKA:如何区分“缺失”和“不适用”的数字数据?

为啥 NSRegularExpression 不包含在适用于 Mac 应用程序的foundtion.framework 中,因为它适用于 iOS?

Nginx websocket 将适用于单个响应或根本不适用,似乎是随机的

mongodb适用和不适用的应用场景