Как использовать версионные развертывания при программном создании триггеров? - PullRequest
0 голосов
/ 16 января 2019

При программном создании триггера, т. Е. Через ScriptApp.newTrigger(), всегда ли он указывает на развертывание «в голове» или самое последнее опубликованное (версионное) развертывание? (См. Документацию по типам развертывания здесь .)

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

Если триггеры могут указывать только на развертывание заголовка, каковы наилучшие методы для указания их на код, который можно безопасно обновить в dev (головной версии)?

Ответы [ 2 ]

0 голосов
/ 16 января 2019
  1. Вы хотите знать, когда ScriptApp.newTrigger() установлен триггер, какая версия скрипта используется.
  2. Вы хотите узнать способ установки триггера, выбрав версию скрипта.

Я понимаю ваш вопрос, как указано выше. Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких ответов.

Ответ за Q1:

  • Когда триггер установлен с помощью ScriptApp.newTrigger(), хотя значение «Развертывание» не отображается в «Триггерах текущего проекта», последний скрипт запускается установленным триггером. Эта ситуация не зависит от версии скрипта. Используется текущий последний скрипт.

  • Если триггер установлен вручную, вы можете выбрать версию развертывания в «Выберите, какое развертывание должно выполняться».

    • К сожалению, на данном этапе это не может быть достигнуто сценарием. Я думаю, что это может быть достигнуто в будущем обновлении.

Ответ на Q2:

Чтобы установить триггер, выбрав версию сценария в качестве обходного пути, я хотел бы предложить использовать библиотеку. Ход этого обходного пути заключается в следующем. Это образец потока.

  1. Создание 2 автономных проектов.
    • Один используется в качестве библиотеки.
    • Другой используется в качестве проекта для использования библиотеки.
  2. В проекте для использования библиотеки, например, ставится function myFunction() {lib.myFunction()}. Этот скрипт выполняет функцию библиотеки.
    • Установить библиотеку в этот проект.
    • Вы можете выбрать скрипт, который вы хотите запустить для пользователей, выбрав версию библиотеки.
    • Триггер установлен в этом проекте.
  3. Проект библиотеки - это проект для разработки. Он управляет версией развивающегося скрипта с помощью «Manage version» редактора скриптов.
  4. Когда триггер установлен, он запускает ScriptApp.newTrigger("myFunction") в проекте для использования библиотеки. В это время при запуске триггера используется выбранная версия библиотеки. При этом последний скрипт библиотеки не используется. Пользователи могут использовать стабильный скрипт выбранной вами версии.
Замечания:
  • Вы также можете увидеть версию библиотеки в файле Manifests (appsscript.json). Этот файл может быть изменен скриптом. Этим вы также можете изменить версию скрипта, используемую триггером скриптом.

Ссылки:

Если я неправильно понимаю ваш вопрос, извините.

0 голосов
/ 16 января 2019

Да, он всегда указывает на «голову», поскольку версионные развертывания доступны только для дополнений Gmail.

Вышеуказанное основано на том, что единственное руководство по публикации надстройки Gmail включает в себя шаг создания версионного развертывания -> https://developers.google.com/gmail/add-ons/how-tos/publish#step_1_create_a_versioned_deployment

...