Я сделал следующее:
- Создана форма Google (например, идентификатор формы = ABC)
- Создан Google Sheet (назовем его sheet1)
В редакторе сценариев Sheet1 установил триггер для моей формы с кодом, подобным следующему:
var form = FormApp.openById("ABC");
ScriptApp.newTrigger("testFunctionSheet1").forForm(form).onFormSubmit().create();
Когда я вызываю следующее, я вижу, что мой триггер был установлен правильно:
ScriptApp.getUserTriggers(form);
Все отлично. Я могу выполнить код всякий раз, когда отправляется форма Google.
Проблема в том, что позже я продолжаю и создаю новый Google Sheet (назовем его sheet2), который имеет похожий код:
ScriptApp.newTrigger("testFunctionSheet2").forForm(form).onFormSubmit().create();
Однако, чтобы быть в безопасности, я пытаюсь удалить все предыдущие триггеры из всех моих старых сценариев (т. Е. Sheet1). Тем не менее, когда я бегу:
ScriptApp.getUserTriggers(form);
... он возвращает один результат (testFunctionSheet2
) вместо того, чтобы возвращать testFunctionSheet1
и testFunctionSheet2
. Оказывается, он возвращает только триггеры, которые выполняются текущим скриптом!
Это проблематично, потому что это может означать, что у меня случайно есть много скриптов, которые все выполняются при отправке формы. Если бы я никогда не записывал, какие сценарии выполняются для каких форм, я бы не знал, что именно запускается из каждой отправки. Некоторые из этих сценариев могут либо делать то же самое (что в лучшем случае является пустой тратой циклов ЦП, либо в худшем случае мешать друг другу), либо они могут делать совершенно разные вещи и потенциально конфликтовать друг с другом.
Мне нужен простой способ найти все триггеры сценария, которые будут выполнены при отправке формы. Что-то вроде того, если бы функция на самом деле вела себя так, как я ожидал ...
т.е. ScriptApp.getUserTriggers(form)
должно вернуть что-то вроде:
sheet1
: testFunctionSheet1
sheet2
: testFunctionSheet2
Таким образом, я могу легко определить, какие сценарии будут выполняться при отправке формы, и можно вручную удалить старые, чтобы ничего не происходило.
Есть ли способ узнать, какие триггеры будут выполняться во всех моих сценариях при отправке формы?
Обновление : документация для getUserTriggers()
разъясняет, что никогда не будет возвращать триггеры для разных сценариев:
Получает все устанавливаемые триггеры, принадлежащие этому пользователю в данной форме, только для этого скрипта или надстройки. Этот метод нельзя использовать для просмотра триггеров, прикрепленных к другим сценариям .
Как тогда я узнаю все триггеры, связанные с данной формой Google? Примечание: это не обязательно должно быть программным решением. Если бы в формах был элемент пользовательского интерфейса, который давал мне эту информацию, этого тоже было бы достаточно.