#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 и посмотреть, связано ли это.