Google Apps Script, вызывающий функцию один раз при копировании документа - PullRequest
0 голосов
/ 20 ноября 2018

Я поигрался с Редактором скриптов Google и получил от него кучу пользы.

Следующая задача, на которую я смотрю, это автоматическое форматирование и вставка / замена текста при копировании Шаблон .

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

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

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу казатьсячтобы заставить триггеры работать так, как я хотел бы.

2 из триггеров, которые, как я думал, я мог бы попробовать: onOpen(e) и onInstall(e).

onOpen(e)хотя он работает, он работает "слишком хорошо".То есть он также заменяет текст в исходном шаблоне, что создает неудобства при обновлении информации в этих шаблонах.

onInstall(e), я подумал, что это будет работать, поскольку создание копии документа также "устанавливает"сценарий, а также.Однако эта функция, по-видимому, вообще не работает.

Есть ли идеи о том, чтобы триггер срабатывал один раз и только один раз, когда документ создается из шаблона?

Cheers, Bricktron

1 Ответ

0 голосов
/ 20 ноября 2018

Прежде всего, Trigger onInstall(e) работает только для дополнений.Теперь перейдя к onOpen(e), по моему мнению, вы можете использовать Службы Google Apps Script Property для хранения одного флажка, который поможет вашему коду определить, был ли открыт этот файл или нет.

Таким образом, для самого первого запуска onOpen(e) присвойте свойство, например: propertyService.setProperty("opened","TRUE"), и в следующий раз вы сможете проверить, открыв свойство, было ли оно уже «открыто» или нет.

Пример:

var openedFlag=propertyService.getProperty("opened");
if(openedFlag=="TRUE"){
  //Document has been modified
  //Do not run the modifiable code again
}else {
  //First time
  //Edit the file
  //Set the propertyService to "TRUE"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...