Скрипт Google, встроенный в лист Google, добавляющий пункт меню - PullRequest
0 голосов
/ 19 июня 2020

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

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Sync to Calendar')
      .addItem('Create Events Now', 'CreateEvent')
      .addItem('Delete All Events in Calendar', 'DeleteAllEvents')
      .addToUi();
}

Это работает нормально, но я хотел бы закрыть сценарий, а также, когда я делюсь таблицей, члену будет представлено меню для щелчка и выполнения функции. У кого-нибудь есть решение, как сделать это постоянным? (без публикации сценария, что, на мой взгляд, было бы излишним)

Ответы [ 3 ]

1 голос
/ 19 июня 2020

В некоторых случаях OnOpen не запускается автоматически, если редактор не авторизовал сценарий. В этом случае вам нужно дать редакторам возможность запускать скрипт, чтобы они могли авторизовать его, прежде чем onOpen запустится автоматически. Вы можете либо дать им инструкции, чтобы сделать это вручную через редактор скриптов, либо вы можете вставить «кнопку» в лист.

Для этого «кнопка» - вставьте рисунок в лист (кнопка « "), привяжите рисунок к своему сценарию и попросите пользователей, впервые щелкнувших рисунок,.

  • В электронной таблице нажмите« Вставить »->« Рисунок »
  • Нарисуйте» кнопка »изображение с полезным текстом для конечных пользователей (« Показать пользовательское меню »или« Нет меню? Щелкните здесь! »и т. д. c.)
  • Поместите рисунок в свою электронную таблицу на видном / удобном месте.
  • Щелкните «три точки» на чертеже и выберите «Назначить сценарий»
  • Введите имя функции (например, OnOpen)

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

0 голосов
/ 21 июня 2020

Предлагаемый ответ Кэмерона Робертса работает как обходной путь.

Хотя в моем случае проблема заключалась в том, что триггер сценария для onOpen отсутствовал. Мне пришлось отредактировать триггер сценария в написанном мной сценарии. В редакторе скриптов go в «Редактировать» -> «Триггеры текущих проектов» и добавить триггер для функции onOpen с событием «при открытии». Видимо, в моем случае этого не хватало, после этого редактирования все заработало как шарм.

0 голосов
/ 19 июня 2020

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

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

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...