Скрипт приложений Google Apps получает имя типа события триггера - как получить имя типа события из класса триггера - PullRequest
0 голосов
/ 20 июня 2020

Следующий код не может найти тип события триггера, даже если имя типа события в виде строки является правильным. Метод getEventType() получает объект, а не строку. Согласно документации по адресу:

https://developers.google.com/apps-script/reference/script/event-type?hl=en

, метод getEventType() возвращает ENUM EventType. Но в документации нет списка методов для получения чего-либо из ENUM, а свойства, перечисленные в документации, ничего не возвращают. необходимо изменить, чтобы определить, предназначен ли триггер для этого типа события?

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 Ответ

3 голосов
/ 20 июня 2020

Одна из возможностей - просто полагаться на строковое представление. Поскольку мы знаем, что тип события отображается как ON_FORM_SUBMIT при просмотре журналов, мы знаем, что вызов toString() в eventType будет соответствовать ON_FORM_SUBMIT:

Logger.log(triggerEventType.toString() === 'ON_FORM_SUBMIT'); // true

Предпочтительный метод - сравнить enums:

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 реализует перечисления.

...