我有一个电子表格,其中包含近十年前的每月数据,并且正在为此和其他类似的工作表创建一个仪表板。
我正在尝试过滤数据表以获取显示过去 12 个月数据的图表。我尝试使用 getTime() 或 valueOf() 对日期使用数字范围过滤器,但是当我使用 date.valueOf() 设置最小值时,两者都拒绝构建过滤器(我认为是因为大小)。我还使用 viewWindow 尝试了下面链接中的解决方案,但失败了。 Date Range Google Chart Tools
我知道这可以通过可视化 API 来完成,但不幸的是我只能使用 Google Apps 脚本来实现此目的。我尝试使用一个数据表来处理所有事情,但如果这是不可能的,我可以创建一个仅包含 12 行的单独数据表。我真的希望让用户加载自定义的时间范围,但是 GAS 中没有 ChartRangeFilter。
最佳答案
正如您所发现的,NumberRangeFilter 不适用于日期,并且 Apps 脚本当前不支持任何其他范围过滤器。我采用的一种解决方法是将日期转换为数字,并使用 NumberRangeFilter 来过滤它们。例如,“2012 年 10 月 19 日”可以转换为“20121019”。
为了避免图表由于 20121031 到 20121101 之间的整体而出现奇怪的跳跃,您需要在数字日期上设置过滤器,但使用 DataViewDefinition 仅在图表中显示实际日期。
这是一段粗略的示例代码。第 0 列是实际日期,第 1 列是数字日期,第 2 列和第 3 列是我要绘制的值。
var dateFilter = Charts.newNumberRangeFilter()
.setFilterColumnIndex(1)
.build();
var view = Charts.newDataViewDefinition()
.setColumns([0, 2, 3]);
var areaChart = Charts.newAreaChart()
.setDataViewDefinition(view)
.setStacked()
.setDimensions(800, 400)
.build();
关于google-apps-script - 在 Google Apps 脚本中过滤图表上的日期范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12917594/