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 不适用?
为啥 NSRegularExpression 不包含在适用于 Mac 应用程序的foundtion.framework 中,因为它适用于 iOS?