我正在尝试使用编辑特定单元格范围的日期和时间来更新单元格。
我一直在摆弄下面的代码,但检查执行日志后,触发器每次都失败。
我哪里错了?
function onEdit(e) {
var range1 = e.range.getSheet().getRange("D260:D264");
var range2 = e.range.getSheet().getRange("P260:P264");
var range3 = e.range.getSheet().getRange("S260:S264");
var range4 = e.range.getSheet().getRange("AE260:AE264");
var range5 = e.range.getSheet().getRange("AJ260:AJ264");
var range6 = e.range.getSheet().getRange("D53");
var range7 = e.range.getSheet().getRange("N53");
if (e.range.intersects(range1) || e.range.intersects(range2) || e.range.intersects(range3) || e.range.intersects(range4) || e.range.intersects(range5) || e.range.intersects(range6) || e.range.intersects(range7)) {
var dateCell = e.range.getSheet().getRange("W247");
dateCell.setValue(new Date());
}
}
检测 Google Apps Script 上的编辑范围
您出现此错误的原因是 e.range 没有 intersect 方法。我确实认为您正在尝试检查范围是否在您要监视的范围列表中。基本上在 Google Apps Script 上,当您使用 getRange() 时,您将获得一个 Range 对象而不是一个集合,因此您需要一些东西来获取可用于比较的值。请查看我创建的解决方案,您可以将其用作项目的参考,与此不同的是,我没有列出数组上的每个范围,只是足以进行一些测试。
代码的作用是它有一个要比较的范围列表,即您监视的范围。我获取已编辑范围的 A1 符号,检查正在编辑的范围是否与监视的范围一致,然后执行 setValue()。
提供的解决方案
参考:
Google Apps 脚本 - 范围
Google Apps 脚本 - 简单触发器
温馨提醒:检查简单触发器时,了解 Google Apps Script 平台的执行日志也很有帮助,这样您就可以详细了解代码遇到的问题。打开 Google Apps Script 时,它位于浏览器的最左侧。在导航栏上,您可以点击执行来检查执行的信息。