Динамическое точечное меню в дополнениях Google Workspace

#google-apps-script #google-workspace-add-ons

#google-приложения-скрипт #google-workspace-дополнения

Вопрос:

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

Я обнаружил, что параметры меню определены в ресурсе развертывания надстройки (также называемой manifest) в виде массива под названием «universalActions». Например, так:

 "universalActions": [{
        "label": "Settings",
        "openLink": "https://myapp.com/settings"
      },{
        "label": "Sign Out",
        "openLink": "https://myapp.com/logout"
      }]
 

Но я не могу найти способ изменить «универсальные действия» после развертывания.

В приведенном ниже примере вы видите надстройку Evernote перед входом в систему и после входа в систему.

Evernote перед входом в систему
Evernote после входа в систему

На втором рисунке, таким образом, после входа в систему, вы видите дополнительные пункты меню «Einstellungen» (что означает настройки) и «Abmelden» (что означает выход из системы). Как я могу добиться отображения этих параметров только после входа в систему?

Ответ №1:

Универсальными действиями, согласно документации скрипта приложения, являются:

[…] элементы элементов меню, которые позволяют пользователю открывать новую веб-страницу, отображать новые карточки пользовательского интерфейса или запускать определенную функцию скрипта приложений при выборе. По своей работе они очень похожи на действия с картами, за исключением того, что универсальные действия всегда помещаются на каждую карту в вашем дополнении, независимо от текущего контекста дополнения.

Действительно, использование действия с картой кажется подходящим выбором для этого, однако вы также можете рассмотреть возможность проверки других доступных опций виджетов, поскольку они позволяют надстройке делать что-то на основе взаимодействия с пользователем:

  • Средства выбора даты и времени;
  • Кнопка изображения;
  • Ввод выбора;
  • Переключить;
  • Текстовая кнопка;
  • Ввод текста;
  • Сетка;

Ссылка

Ответ №2:

Функция, которую я искал, называется CardActions. Если вы определите «CardAction», оно будет размещено в меню строки заголовка (то, что я назвал «точечным меню»).

Как JSON-объект, вы можете поместить его так:

 "action": {
      "navigations": [
        {
          "pushCard": {
            "cardActions": [
              {
                "actionLabel": "Logout",
                "onClick": {
                  "openDynamicLinkAction": {
                    "function": "https://dummy-function-from-resources.net/openLinkCallback"
                  }
                }
              }...