Как отправлять переменные в функцию, управляемую по времени (часы), более одного раза - PullRequest
0 голосов
/ 04 августа 2020

Я пытался выяснить, как отправлять переменные в функцию, которая запускается от триггера, управляемого по времени (часов). Существует метод сохранения переменных в PropertyStore в триггерной функции и последующего вызова их в фактической функции, которая выполняет любую нужную вам задачу.

См. Этот вопрос, где он подробно обсуждается. Как установить триггер по времени (часы) для функции, которой требуются параметры, отправляемые ей?

Проблема с этим методом заключается в том, что он имеет ограничение.

Дело в том, что если я хочу запустить эту функцию дважды, у меня возникнет проблема, поскольку я уже сохранил ЗНАЧЕНИЕ для КЛЮЧА, который я создал для функции, в первый раз, когда я ее запустил, я не могу go вперед и сохранить другое ЗНАЧЕНИЕ чтобы функция использовалась во второй раз, потому что она уже занята.

Например, если я запускаю свою функцию для запуска завтра в 14:00, я отправляю переменную в свойство, скажем, как пара «ИМЯ»: «Джон» . Теперь, если я хочу установить триггер для той же функции, запускаемой в 3 часа дня, но на этот раз я хочу, чтобы «ИМЯ» было Стивеном, я не могу этого сделать, так как он уже установлен на «Джон».

Все код можно найти, щелкнув ссылку выше, он был размещен в этом вопросе, и это своего рода дополнительный вопрос. Модераторы посоветовали задать ему отдельный вопрос.

1 Ответ

0 голосов
/ 05 августа 2020

Решение

Вы должны создать Script Property, который key является строкой trigger Uid и value JSON с параметрами. Таким образом, у каждого триггера может быть своя собственная область действия, и вы можете использовать одни и те же имена параметров без коллизий.

См. Этот ответ для получения подробной информации о реализации: { ссылка }

Примечание : PropertiesService имеет ограничения по размеру, вы также можете использовать вспомогательную электронную таблицу для хранения ваших строковых параметров.

+---------------+-------------+
|       A       |      B      |
+---------------+-------------+
| trigger-1-Uid | JSON String |
+---------------+-------------+
| trigger-2-Uid | JSON String |
+---------------+-------------+

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

Чтобы получить Uid триггера после его создания с помощью класса ScriptApp, вы можете получить свойство triggerUid из возвращенного объекта триггера.

Ссылки

Объект Time Driven Trigger

SpreadsheetApp

PropertiesService

...