Можно ли создать ярлык для выполнения скрипта Google Apps?

У меня есть скрипт, который работает в Google Sheets, который загружается записью Forms. В основном, когда я заполняю форму, она создает запись на листе. Из этой записи мой сценарий создает новый документ, который «украшает» поля на листе для распространения.

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

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

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

Есть ли способ запустить этот сценарий по команде без необходимости открывать редактор сценариев, щелкать нужный сценарий и затем нажимать «Выполнить»?

Почему в приложениях нет горячих клавиш? Я знаю о Ctrl+R, но это работает, только если у вас уже есть скрипт, который вы хотите выделить на верхней панели действий. Если я наберу Ctrl+R без его выделения, ничего не произойдет. На самом деле ничего не происходит с Alt + R или Alt. Я пытался просто нажать табуляцию 187 раз, чтобы добраться туда, где мне нужно, но вкладка никогда не фокусируется «в» области меню сценария. Он просто перемещается по адресной строке, панели быстрого доступа и т. д.

ПРИМЕЧАНИЕ. Я не хочу вносить серьезные изменения в ЭТОТ скрипт. Потребовалась целая вечность, чтобы заставить это работать правильно, и я не хочу поднимать его. Я просто хочу иметь возможность запускать его, не выполняя для этого 18 шагов.


person Paige OWENS-SC    schedule 03.01.2019    source источник
comment
При публикации вопроса о коде включите минимальный, полный и проверяемый пример. Если вы делаете копию шаблона для создания документа, установите флажок это вне.   -  person CalamitousCode    schedule 04.01.2019
comment
Кроме того, этот вопрос может помочь вам или эту документацию о настраиваемых меню.   -  person CalamitousCode    schedule 04.01.2019
comment
Я чувствую, что вашему сценарию, вероятно, потребовался дополнительный шаг или около того, чтобы создать файл на вашем диске, а не на общем диске. Но вы не показали здесь код, иллюстрирующий, как вы создавали файл, так что никто из нас не может быть в этом уверен.   -  person tehhowch    schedule 04.01.2019
comment
Я предполагаю, что вы можете использовать Drive API для перемещения «Результирующий документ» на ваш диск. Но я должен иметь возможность просматривать ваш код.   -  person Cooper    schedule 09.03.2019
comment
К сожалению, я не смог использовать ни один из API из-за наших ограничений безопасности. Я нашел обходной путь — у меня есть триггер, основанный на времени, который срабатывает каждую минуту. Если на листе формы есть новая запись, мой сценарий сделает свое дело и, когда закончит, сделает запись в ячейке неиспользуемого столбца на листе формы. Затем мой скрипт знает, что нельзя повторно копировать ту же строку.   -  person Paige OWENS-SC    schedule 10.03.2019


Ответы (1)


Невозможно выполнить функцию автономного проекта сценария с помощью сочетания клавиш из редактора сценариев приложений. Если бы ваш сценарий был связан, у вас была бы возможность использовать сочетания клавиш из файла-контейнера Google Sheets (как google-sheets-macro), но в макросах есть некоторые ограничения.

Тем не менее, вы не без вариантов. Двое из них:

  • Опубликуйте проект скрипта как веб-приложение и используйте посещение страницы в качестве триггера.
    Откройте страницу / нажмите на закладку -> выполните функцию через doGet().
  • Преобразуйте свой сценарий в стиль "опроса", который обрабатывает любое количество ответов формы, и используйте триггер на основе времени (например, ежечасно, ежедневно) для автоматизации всего процесса.
    (Включите "я уже обработал этот ответ" флаг для предотвращения повторной обработки ответа)

Существуют более сложные конфигурации (например, Apps Script API + локальное задание cron), но они вряд ли будут проще, чем два приведенных выше варианта.


Как я упоминал в своем комментарии, вам, скорее всего, просто понадобился дополнительный шаг, чтобы исходный связанный скрипт создал файл на вашем Google Диске, а не на общем диске хоста. Если вы заинтересованы в этом направлении, вы захотите задать соответствующий (читай: новый) вопрос.

person tehhowch    schedule 04.01.2019