【发布时间】:2020-05-10 12:49:59
【问题描述】:
多年来,我有一张包含 3 列(月、计数、金额)的工作表。
2010-01, 10, 20
2010-02, 34, 34
...
2011-01, 30, 43
2011-02, 12, 23
...
2012-01, 45, 33
2012-02, 43, 22
我想为这些年来的每个月创建图表。 所以是一月、二月等的图表。
我可以编写一些脚本。 google chart api (for web) 提供了newDataTable 和setDataTable,它们可以处理脱节的数据。对于谷歌表格中的脚本,似乎只有范围可用于图表。我可以创建虚拟范围(但这只是 DataTable)吗?:-) 关于如何在 Google 表格中执行此操作的任何建议?
** 添加于 2020/05/12 **
我不确定如何进行查询以获取适当的数据集:-(
所以我决定使用脚本来创建一个图表友好的范围。
function setMonthlyStat(sheetName) {
var ss = SpreadsheetApp.getActive().getSheetByName(sheetName);
var value1, value2;
var sourceX, sourceY;
var row = 13; // number of years
sourceX = 2; sourceY = 2; // starting x, y
// continuous monthly value year by year (j*12 = offset by year)
var stats = new Array(row);
for (var i=0; i<=row-1; i++) { // vertical
stats[i] = new Array(24);
for (var j=0; j<=11; j++) { // horizontal
// count
value1 = ss.getRange(sourceX+j+i*12, sourceY).getValue();
stats[i][j*2] = value1;
// amount
value2 = ss.getRange(sourceX+j+i*12, sourceY+1).getValue();
stats[i][j*2+1] = value2;
}
}
ss.getRange("L2:AI14").setValues(stats); // the range is not the one in the screenshot
}
注意:ncount = #, namount = $
【问题讨论】:
-
制作一个真正的新系列?
-
是的,最后的办法是用图表所需的范围格式以编程方式创建一个新表,我只是想看看是否有办法不执行此步骤并直接从原始数据集:-)
-
我没有做过很多图表,但是你有什么理由想要使用脚本吗?查询或类似功能不会提取每个月的数据,并允许您从查询结果中绘制图表吗?
-
=query()将使分组更容易 -
我不确定如何进行查询以获取适当的数据集:-(
标签: google-apps-script google-sheets