google-apps-script - 在 Google Apps 脚本中过滤图表上的日期范围

标签 google-apps-script google-visualization

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

我正在尝试过滤数据表以获取显示过去 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/

相关文章:

javascript - 在仪表板中添加 ControlWrapper 筛选器设置时发生错误。这有什么问题吗?

javascript - Google Chart 单击图例隐藏列

google-apps-script - 通过选择获取不连续的事件范围并以编程方式使用Google脚本

google-apps-script - 创建 Google 电子表格的副本,无需复制脚本

google-apps-script - 从行中获取数据到数组中

google-apps-script - 如何使用 Apps 脚本将 .docx 文件转换为 Google 文档?

javascript - 将图表类型参数传递给自定义函数作为谷歌图表函数

javascript - Google 图表和 Ajax 响应

javascript - 使用 Google 脚本将共享文件移至我的云端硬盘?

javascript - 如何将鼠标单击操作添加到谷歌树状图可视化