为了账号安全,请及时绑定邮箱和手机立即绑定

Apps 脚本获取触发器事件类型名称 - 如何从触发器类中获取事件类型的名称

Apps 脚本获取触发器事件类型名称 - 如何从触发器类中获取事件类型的名称

达令说 2022-10-13 15:40:23
以下代码无法找到触发器的事件类型,即使作为字符串的事件类型名称是正确的。该方法getEventType()正在获取一个对象,而不是一个字符串。根据以下文件:https://developers.google.com/apps-script/reference/script/event-type?hl=en该getEventType()方法返回一个EventType ENUM。但是文档没有列出任何从 ENUM 中获取任何内容的方法,并且文档中列出的属性不返回任何内容。假设要查找的事件类型是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    }
查看完整描述

1 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

一种可能性是简单地依赖字符串表示。由于我们知道事件类型显示为ON_FORM_SUBMIT查看日志时,我们知道调用toString()eventType 将对应于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 如何实现枚举不敏感。


查看完整回答
反对 回复 2022-10-13
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号