Apps 脚本获取触发器事件类型名称 - 如何从触发器中获取事件类型的名称 Class
Apps Script get trigger event type name - How to get the name of the event type from the Trigger Class
以下代码无法找到触发器的事件类型,即使作为字符串的事件类型名称是正确的。方法 getEventType()
正在获取一个对象,而不是一个字符串。根据文档:
https://developers.google.com/apps-script/reference/script/event-type?hl=en
getEventType()
方法 return 是一个 EventType ENUM。但是文档没有列出任何从 ENUM 中获取任何东西的方法,文档中列出的属性也没有 return 任何东西。
假设要查找的事件类型是ON_FORM_SUBMIT
需要如何修改代码来检测触发器是否针对该事件类型?
function getEventTypeNameOfTrigger() {
var oneTrigger,triggers,triggerEventType;
triggers = ScriptApp.getProjectTriggers();//Get the projects triggers
oneTrigger = triggers[0];//Get the first trigger - For testing
triggerEventType = oneTrigger.getEventType();//Use the getEventType method to get the EventType ENUM
Logger.log('triggerEventType: ' + triggerEventType);//Displays the event type name in the logs
Logger.log('typeof triggerEventType: ' + typeof triggerEventType);//Displays "object"
Logger.log(triggerEventType === 'ON_FORM_SUBMIT');//Evaluates to FALSE even when the event type name is ON_FORM_SUBMIT
}
一种可能性是简单地依赖字符串表示。由于我们知道在查看日志时事件类型显示为 ON_FORM_SUBMIT
,因此我们知道在 eventType 上调用 toString()
将对应于 ON_FORM_SUBMIT
:
Logger.log(triggerEventType.toString() === 'ON_FORM_SUBMIT'); // true
首选方法是比较枚举:
switch (triggerEventType) {
case ScriptApp.EventType.CLOCK:
Logger.log('got a clock event');
break;
case ScriptApp.EventType.ON_FORM_SUBMIT:
Logger.log('got a form submit event')
break;
...
}
这是首选,因为这意味着您对 Google 如何实现枚举并不敏感。
以下代码无法找到触发器的事件类型,即使作为字符串的事件类型名称是正确的。方法 getEventType()
正在获取一个对象,而不是一个字符串。根据文档:
https://developers.google.com/apps-script/reference/script/event-type?hl=en
getEventType()
方法 return 是一个 EventType ENUM。但是文档没有列出任何从 ENUM 中获取任何东西的方法,文档中列出的属性也没有 return 任何东西。
假设要查找的事件类型是ON_FORM_SUBMIT
需要如何修改代码来检测触发器是否针对该事件类型?
function getEventTypeNameOfTrigger() {
var oneTrigger,triggers,triggerEventType;
triggers = ScriptApp.getProjectTriggers();//Get the projects triggers
oneTrigger = triggers[0];//Get the first trigger - For testing
triggerEventType = oneTrigger.getEventType();//Use the getEventType method to get the EventType ENUM
Logger.log('triggerEventType: ' + triggerEventType);//Displays the event type name in the logs
Logger.log('typeof triggerEventType: ' + typeof triggerEventType);//Displays "object"
Logger.log(triggerEventType === 'ON_FORM_SUBMIT');//Evaluates to FALSE even when the event type name is ON_FORM_SUBMIT
}
一种可能性是简单地依赖字符串表示。由于我们知道在查看日志时事件类型显示为 ON_FORM_SUBMIT
,因此我们知道在 eventType 上调用 toString()
将对应于 ON_FORM_SUBMIT
:
Logger.log(triggerEventType.toString() === 'ON_FORM_SUBMIT'); // true
首选方法是比较枚举:
switch (triggerEventType) {
case ScriptApp.EventType.CLOCK:
Logger.log('got a clock event');
break;
case ScriptApp.EventType.ON_FORM_SUBMIT:
Logger.log('got a form submit event')
break;
...
}
这是首选,因为这意味着您对 Google 如何实现枚举并不敏感。