2

我有一个电子表格,其中包含近十年前的每月数据,并且正在为这个和其他类似的表格创建一个仪表板。

我正在尝试过滤数据表以获取显示过去 12 个月数据的图表。我尝试使用 getTime() 或 valueOf() 在日期上使用数字范围过滤器,但是当我使用 date.valueOf() 设置最小值时,两者都拒绝构建过滤器(我假设是因为大小)。我还使用 viewWindow 尝试了下面链接中的解决方案,但失败了。 日期范围谷歌图表工具

我知道这可以通过可视化 API 来完成,但不幸的是,我为此坚持使用 Google Apps 脚本。我正在尝试对所有内容都使用一个数据表,但如果这是不可能的,我可以创建一个只有 12 行的单独数据表。我真的希望让用户加载自定义的时间范围,但是 GAS 中没有 ChartRangeFilter。

4

1 回答 1

2

如您所见,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();
于 2012-10-19T21:20:44.383 回答