Пользовательские меню в Google Workspace

Apps Scripts могут расширять некоторые продукты Google, добавляя элементы пользовательского интерфейса, которые при нажатии выполняют какую-то функцию. Наиболее распространённый пример — запуск кода из пользовательского пункта меню в Документах, Таблицах, Презентациях или Формах, но функции также могут запускаться нажатием на изображения и рисунки в Таблицах Google.

Пользовательские меню в Документах Google, Таблицах, Слайдах или Формах

Пример пользовательского меню с подменю

Apps Script могут добавлять новые меню, причём каждый пункт меню должен быть привязан к функции в вашем проекте. (В Google Формах пользовательские меню видны только редактору, который открывает Форму для её изменения, а не пользователю, который открывает ее, чтобы ответить).

Apps Script могут создать меню, только если проект привязан к Документу, Таблице или Форме (т.н. “Container-bound Scripts” или “Скрипты, привязанные к контейнеру”). Чтобы отобразить меню, когда пользователь открывает файл, напишите код меню внутри зарезервированной функции onOpen().

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

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  // Или DocumentApp, SlidesApp или FormApp.
  ui.createMenu('Пользовательское меню')
      .addItem('Первый пункт меню', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Подменю')
          .addItem('Второй пункт меню', 'menuItem2'))
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Или DocumentApp, SlidesApp или FormApp.
     .alert('Вы нажали на первый пункт меню!');
}

function menuItem2() {
  SpreadsheetApp.getUi() // Или DocumentApp, SlidesApp или FormApp.
     .alert('Вы нажали на второй пункт меню!');
}

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

Кликабельные изображения и рисунки в Google Таблицах

Вы также можете назначить функцию Apps Script изображению или рисунку в Google Таблицах, при условии, что скрипт привязан к этой Таблице. В приведенном ниже примере показано, как это настроить.

В Google Таблицах выберите пункт меню Расширения - Apps Script, чтобы создать скрипт, привязанный к Таблице. Удалите весь код в редакторе Apps Script и вставьте код ниже:

  function showMessageBox() {
    Browser.msgBox('Вы на него нажали!');
  }

Вернитесь в Таблицы и вставьте изображение или рисунок, выбрав в меню Вставка - Изображение или Вставка - Рисунок.

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

Пример изображения-кнопки в Таблицах Гугл

В появившемся диалоговом окне введите имя функции Apps Script, которую вы хотите запустить, без скобок — в данном случае showMessageBox. Нажмите ОК.

Снова нажмите на изображение или рисунок. Теперь функция выполняется.

Примечание: выполнение программы запускается только нажатием на изображение или рисунок в веб-браузере. Apps Script не выполняются, если нажать на изображение или рисунок на мобильном устройстве.