Charts.newDataTable() 不适用于日期
Charts.newDataTable() not working with Dates
在 Google 广告脚本中,我正在尝试创建一个基本折线图,如下所述:
https://developers.google.com/apps-script/reference/charts/line-chart-builder
我要绘制图表的数据是日期 X 点击次数。
我可以使用来自 Google 广告的数据生成图表,但是,Dates 被格式化为 Strings 而不是导致其他问题的图表中的实际日期。
例如,此代码将处理我的数据,但将日期格式化为图表中的字符串:
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
但这似乎不起作用。
有什么建议吗?
最后,我通过将 Google 广告数据导出到 Google Sheet 然后将 sheet 读回 Google 图表广告。
我做了这样的事情,对我有用:
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;
}
在 Google 广告脚本中,我正在尝试创建一个基本折线图,如下所述: https://developers.google.com/apps-script/reference/charts/line-chart-builder
我要绘制图表的数据是日期 X 点击次数。
我可以使用来自 Google 广告的数据生成图表,但是,Dates 被格式化为 Strings 而不是导致其他问题的图表中的实际日期。
例如,此代码将处理我的数据,但将日期格式化为图表中的字符串:
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
但这似乎不起作用。
有什么建议吗?
最后,我通过将 Google 广告数据导出到 Google Sheet 然后将 sheet 读回 Google 图表广告。
我做了这样的事情,对我有用:
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;
}