Триггер, созданный триггером сценария, не работает

#google-apps-script #google-sheets

Вопрос:

Мне нужно запускать скрипт «ABC2» каждый день ровно в 18:00. Поэтому я создал триггер сценария «TG» и установил триггер для его запуска каждый день с 15:00 до 16:00.

Внутри моего листа в ячейке «B25» указано количество миллисекунд, оставшихся до 18:00.

Таким образом, между 15:00 и 16:00 запускается сценарий «TG» и создает триггер для сценария «ABC2» с точностью до 18:00, используя миллисекунды из ячейки B25, как и должно быть.

Проблема в том, что триггер, созданный «TG» для «ABC2», НИКОГДА не запускается.

В нем говорится, что «Триггер был отключен по неизвестной причине».

Невозможно ли запустить триггер, созданный другим триггером? Помогите мне, пожалуйста

Вот мой код:

Это «ТГ».

     function TG() {
  var sh = SpreadsheetApp.openById('1_qEpIVDv1n5a8PcX6cXrAxPBzlCmTSXoikgBCVBfQC0').getSheetByName("RESUMO");
  var time = sh.getRange('B25').getValue();
  ScriptApp.newTrigger('ABC2')
  .timeBased()
  .after(time)
  .create();
}
 

Это «ABC2».

 function ABC2() {
  var sh = SpreadsheetApp.openById("1_qEpIVDv1n5a8PcX6cXrAxPBzlCmTSXoikgBCVBfQC0");
  var sh1 = sh.getSheetByName('RESUMO');
  var sh2 = sh.getSheetByName('ACOMPANHAMENTO DIARIO');
  var date = Utilities.formatDate(new Date(), 'GMT-3', 'M/d/yyyy');
  var leo = sh2.createTextFinder(date).findAll().map(r => r.getA1Notation());
  var leo1 = sh1.getRange("B3").getValue();
  var leo2 = sh1.getRange("E3").getValue();
  var leo3 = sh1.getRange("B4").getValue();
  var leo4 = sh1.getRange("E4").getValue();
  var leo5 = sh1.getRange("C3").getValue();
  sh2.getRange(leo).offset(0, 1).setValue(leo1);
  sh2.getRange(leo).offset(0, 2).setValue(leo2);
  sh2.getRange(leo).offset(0, 3).setValue(leo3);
  sh2.getRange(leo).offset(0, 4).setValue(leo4);
  sh2.getRange(leo).offset(0, 5).setValue(leo5);
  var destinationRange = sh2.getRange(sh2.getLastRow() - 1, 8, 1, 3).offset(0, 0, 2);
  sh2.getRange(sh2.getLastRow() - 1, 8, 1, 3).autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
}
 

Спасибо за уделенное время!

Ответ №1:

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

Если ваш триггер все еще работает неправильно, я предлагаю вам попробовать использовать другой метод запуска вместо after() того, чтобы, поскольку вы упомянули, что ожидаете, что ваш скрипт будет выполняться «каждый день ровно в 18:00». Вместо этого вы можете попробовать использовать метод, приведенный ниже:

 ScriptApp.newTrigger('ABC2').timeBased().atHour(18).everyDays(1)
 

Комментарии:

1. Все еще не работает. Он не запускает никаких триггеров, созданных сценарием. Я попытаюсь добавить все области 0auth и посмотреть, связано ли это.