如何在 Google 脚本中识别脚本本身是由某些事件触发还是由某人启动?
从技术上来说这是可能的。如果您使用简单触发器,则不得从另一个函数调用该函数。在这种情况下,您只需使用您的函数,例如
onEdit(e)
并尝试检查 e
的值。例如检查 e.source
的值是多少。简单的触发器通常具有该值。查看此页面以查看您可以查找哪些事件处理程序。
使用可安装的触发器就更容易了。假设您有
function1(e)
,并为其设置了触发器。您现在可以检查是否有 e.triggerUid
的值。如果需要,您还可以使用该值来删除触发器!
代码类似于:
let TRIGGERED = undefined;
function main(e) {
console.log(e);
if (e) {
TRIGGERED = true;
}
}
使用可安装的基于时间的触发器时,我得到以下信息
e
。简单触发器还将定义 e
:
{ year: 2024,
'day-of-week': 2,
second: 40,
authMode: ScriptApp.AuthMode.FULL, // https://developers.google.com/apps-script/reference/script/auth-mode
minute: 38,
'day-of-month': 26,
hour: 22,
triggerUid: '470041830',
timezone: 'UTC',
month: 11,
'week-of-year': 48
}
我认为脚本没有办法知道这一点。这里列出了您可以使用的简单触发器:GAS-triggers。但也可以通过 GAS 编辑器 GUI 或调用函数的菜单项手动调用这些函数。