javascript - 如何使用谷歌脚本按日期过滤?
问题描述
我需要根据今天的日期过滤我的电子表格。这是我使用的代码:
function myFunction() {
var SS = SpreadsheetApp.openById("19nlPw9jF8FCFwY-qYwdBILoGDazrH12c8BgYfhwWSKA");
var Sheet = SS.getSheetByName("All Joiners");
var Jun = SS.getSheetByName("01 Jun");
var data = Sheet.getRange(2, 1,Sheet.getLastRow(),Sheet.getLastColumn()).getValues();
var criteria = SpreadsheetApp.FilterCriteriaBuilder.whenDateEqualTo(new Date(Jun.getRange("A1")))
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);
}
解决方案
一些东西 -
- 您的代码在 Jun 上检索单元格 A1 的范围- 您还需要获取该值。
- FilterCriteriaBuilder 不是一个函数,应该是 newFilterCriteria()。
- spreadsheet.getActiveSheet() 应该是 SS.getActiveSheet,因为您将其声明为 SS
原始代码:
var criteria = SpreadsheetApp.FilterCriteriaBuilder.whenDateEqualTo(new Date(Jun.getRange("A1"))).build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);
应该:
let criteria = SpreadsheetApp.newFilterCriteria().whenDateEqualTo(new Date(Jun.getRange("A1").getValue())).build();
SS.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);
另外,附注 - 您声明了 Sheet 但没有使用它。如果您打算更新该特定工作表而不是当前活动工作表上的列过滤器,那么应该是 SS.getActiveSheet() 而不是:
Sheet.getFilter().setColumnFilterCriteria(4, criteria);
如果您的工作表当前没有过滤器,则必须创建它。为此,请检索Range
要应用过滤器的对象,然后调用Range.createFilter()。所以那条线就像(Range
是你想要的范围):
Range.createFilter().setColumnFilterCriteria(4, criteria);
此外,如果您的A1
单元格是日期new Date()
(而不是格式化为日期的字符串),则在设置条件时无需使用:
const criteria = SpreadsheetApp.newFilterCriteria().whenDateEqualTo(Jun.getRange("A1").getValue()).build();
推荐阅读
- python - 如何使用 Python Selenium Webdriver 通过默认 Chrome 配置文件打开 URL
- angular - 如何在 pom.xml 中设置路径变量 - Maven
- java - 如何使用注释根据在 REST 中创建资源的用户授权特定资源
- pgadmin-4 - Postgres 10 和 pgadmin 4 在 ubuntu 18.04 中不起作用
- javascript - javascript,用户点击太快
- c# - C#调用python解释器
- javascript - 比较 2 个不可变列表的相等性
- javascript - 更改 WordPress 联系表 7 中提交按钮的值
- php - 如何在 Visual Studio Code 中使用 Xdebug 在 Ubuntu for Xampp 中调试 PHP 脚本
- react-native - 无法在redux中读取reducers中的属性类型