google-apps-script - 谷歌应用脚本通知工作表特定选项卡上的更改?
问题描述
当对工作表的特定选项卡进行更改时,我正在尝试在 google 工作表上创建通知规则。
我找到了一些谷歌应用脚本并对其进行了调整,但我继续收到如下错误消息。可以做些什么来解决这个问题?
TypeError:无法读取未定义的属性“changeType”
代码:
function notify(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
if (sheet == 'Analytics Project' && e.changeType == 'INSERT_ROW') {
MailApp.sendEmail('test@gmail.com', 'Row Added', 'A row was added to your sheet.');
}
}
解决方案
说明/问题:
您的目标是使用onChange触发器。
您需要了解以下两个概念:
触发器(顾名思义)是根据事件执行的函数。但是,您正在尝试手动执行此函数,但您不应该这样做,因为
e
未定义,因此您收到事件对象e
未定义的消息。因此,不要手动运行它,而是插入一个新行,你会看到你的脚本会完成它的工作。这是一个可安装的触发器,即您需要
onChange
为notify
.
要创建可安装的触发器,只需执行一次函数createTrigger
:
function notify(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
if (sheet == 'Analytics Project' && e.changeType == 'INSERT_ROW') {
MailApp.sendEmail('test@gmail.com', 'Row Added', 'A row was added to your sheet.');
}
}
function createTrigger(){
var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("notify")
.forSpreadsheet(sheet)
.onChange()
.create();
}
推荐阅读
- javascript - 如何在反应js中为数组中的不同元素设置状态
- python - Raspberry Pi - 没有名为“RPI”的模块(尽管已安装)
- javascript - 我需要将日期设置为我不允许通过 js 选择过去的日期吗?
- git - Git、GitHub、VSCode 和多个用户名
- mysql - 如何为此查询执行内连接
- video.js - Video.js Angular XHR 标头
- nuxt.js - NuxtJS 如何将脚本数据传递给全局使用?
- testing - 假设检验相关比例/重复测量比例
- ansible - fileglob 中的自定义变量名而不是项目
- c# - MongoDB .NET 驱动程序未反序列化以进行收集