У меня более 30 пользователей, каждый со своей таблицей.Связанный скрипт каждого пользователя ссылается на собственный скрипт библиотеки, который я использую для обеспечения централизации и простоты обновления своего кода.
Я пытаюсь использовать скрипт приложений для создания триггеров, запускающих определенную функцию в определенное время.Однако я не могу понять, как указать, к какому документу сценария установлен триггер часов.
Вот что я попробовал сначала:
createTimeTrigger("sendTimesheetsToHeads",1440);
function createTimeTrigger(functionToRun,minutesToWait) {
ScriptApp.newTrigger(functionToRun)
.timeBased()
.at(new Date(new Date().getTime()+minutesToWait*60*1000))
.create();
}
Приведенный выше код находится в файле библиотеки, но так как пользователь выполняет код, он устанавливает триггер в файл сценария, привязанного к контейнеру пользователя, а не в файл библиотеки.При запуске триггера происходит сбой, потому что триггер использует функцию в библиотеке, на которую пользователь не имеет прямой ссылки.
Мне нужно иметь возможность программно установить триггер на файл сценария независимой библиотеки.как я могу сделать вручную.Поэтому после просмотра документации сценария приложения (https://developers.google.com/apps-script/reference/script/trigger-builder#forDocument(String)), я обнаружил функцию forDocument () для построителя триггера и попытался сделать следующее:
createTimeTrigger("sendTimesheetsToHeads",1440);
function createTimeTrigger(functionToRun,minutesToWait) {
ScriptApp.newTrigger(functionToRun)
.forDocument(<library script id here>)
.timeBased()
.at(new Date(new Date().getTime()+minutesToWait*60*1000))
.create();
}
Но приведенный выше код выдает следующую ошибку: "TypeError:Не удается найти функцию timeBased в объекте DocumentTriggerBuilder. "
Итак, я попытался переключить порядок:
function createTimeTrigger(functionToRun,minutesToWait) {
ScriptApp.newTrigger(functionToRun)
.timeBased()
.at(new Date(new Date().getTime()+minutesToWait*60*1000))
.forDocument(<library script id here>)
.create();
}
И получил эту ошибку:" TypeError: Невозможно найти функцию forDocument в объекте ClockTriggerBuilder. "Похоже, что функции forDocument () и timeBased () несовместимы в построителе триггеров?
Можно ли сделать то, что я спрашиваю, с помощью скрипта приложений?