GAS получает статус триггера (если отключен, то удалить) - PullRequest
1 голос
/ 07 мая 2020

Я отключил триггеры на основе времени, которые создаются внутри функции. Они имеют тенденцию накапливаться, поэтому я создал этот сценарий для удаления триггеров, который, кажется, работает.

В идеале, хотя я хочу удалить триггеры только тогда, когда status = disabled. Как я могу получить статус триггера? Это возможно?

function deleteTriggers() {

var doc = SpreadsheetApp.openById('id');
var triggers = ScriptApp.getUserTriggers(doc);
// Log the handler function for the first trigger in the array.

Logger.log("triggers length" + triggers.length)

for (var i = 0; i < triggers.length; i++) {

  if(triggers[i].getHandlerFunction() == "name of function") {
  ScriptApp.deleteTrigger(triggers[i]);  
  Logger.log("trigger deleted" + triggers[i].getHandlerFunction());

  } // if 
 } // loop

1 Ответ

1 голос
/ 07 мая 2020

К сожалению, нет прямого способа программного извлечения, либо триггер отключен.

  • Однако, за исключением специфических c случаев обычно только триггер часов можно отключить - по истечении срока их действия. Таким образом, вы можете сузить свои результаты, указав

    if(triggers[i].getEventType() == "CLOCK")

    или

    if(triggers[i].getTriggerSource() == "CLOCK").

  • Если хотите Чтобы сделать шаг вперед, с помощью Apps Script API вы можете независимо получать время выполнения функции через Процессы .

    • Resource: Process дает вам информацию о выполняемых функциях, включая их имя и тип процесса .

    • Тип процесса TIME_DRIVEN указывает, что функция была запущена триггером на основе времени. Вы можете получить соответствующие Process startTime.

    • Итак, если functionName функции, выполненной в прошлом для управляемого по времени триггера, соответствует triggers[i].getHandlerFunction() и triggers[i].getEventType() == "CLOCK", вы можете предположить, что соответствующий триггер уже запускался в прошлом и, следовательно, сейчас отключен. триггеры, связанные с одной и той же функцией-обработчиком.

...