Быстрый старт: создайте надстройку на любом языке программирования

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Создайте надстройку Google Workspace в Cloud Functions без использования Apps Script.

Цели

  • Создайте облачную функцию.
  • Позвоните в Google, чтобы вызвать надстройку.
  • Создайте развертывание надстройки.
  • Установите дополнение.

Предпосылки

Создать облачную функцию

  1. В локальном терминале включите Cloud Functions, Cloud Build и API надстроек:

    gcloud services enable cloudfunctions cloudbuild.googleapis.com gsuiteaddons.googleapis.com
    
  2. В пустом каталоге создайте файл function.js со следующим примером кода:

    /**
     * Google Cloud Function that loads the homepage for a
     * Google Workspace Add-on.
     *
     * @param {Object} req Request sent from Google
     * @param {Object} res Response to send back
     */
    exports.loadHomePage = function addonsHomePage (req, res) {
      res.send(createAction());
    };
    
    /** Creates a card with two widgets. */
    function createAction() {
      return {
        "action": {
          "navigations": [
            {
              "pushCard": {
                "header": {
                  "title": "Cats!"
                },
                "sections": [
                  {
                    "widgets": [
                      {
                        "textParagraph": {
                          "text": "Your random cat:"
                        }
                      },
                      {
                        "image": {
                          "imageUrl": "https://cataas.com/cat"
                         }
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      };
    }
    
  3. Разверните функцию:

    gcloud functions deploy loadHomePage --runtime nodejs12 --trigger-http
    
  4. Убедитесь, что функция развернута:

    gcloud functions call loadHomePage
    

Позвоните в Google, чтобы вызвать надстройку

  1. Найдите адрес электронной почты сервисного аккаунта для надстройки:

    gcloud workspace-add-ons get-authorization
    
  2. Назначьте учетной записи службы роль cloudfunctions.invoker :

    gcloud functions add-iam-policy-binding loadHomePage \
        --role roles/cloudfunctions.invoker \
        --member serviceAccount:SERVICE_ACCOUNT_EMAIL
    

Создание развертывания надстройки

  1. Получите URL развернутой функции:

    gcloud functions describe loadHomePage
    
  2. Создайте файл deployment.json со следующим образцом кода. Замените URL -адрес URL-адресом развернутой функции из предыдущего шага.

    {
      "oauthScopes": ["https://www.googleapis.com/auth/gmail.addons.execute"],
      "addOns": {
        "common": {
          "name": "My HTTP Add-on",
          "logoUrl": "https://raw.githubusercontent.com/webdog/octicons-png/main/black/beaker.png",
          "homepageTrigger": {
            "runFunction": "URL"
          }
        },
        "gmail": {},
        "drive": {},
        "calendar": {},
        "docs": {},
        "sheets": {},
        "slides": {}
      }
    }
    
  3. Создайте развертывание:

    gcloud workspace-add-ons deployments create quickstart \
        --deployment-file=deployment.json
    

Установить надстройку

  1. Установите развертывание в режиме разработки:

    gcloud workspace-add-ons deployments install quickstart
    
  2. Откройте или перезагрузите Gmail, чтобы просмотреть надстройку. На панели инструментов справа найдите значок стакана.

  3. Щелкните значок, чтобы открыть надстройку.

Очистить

  1. Удалите надстройку из своего аккаунта Google:

    gcloud workspace-add-ons deployments uninstall quickstart
    
  2. Чтобы избежать взимания платы за ресурсы, использованные в этом кратком руководстве, удалите проект:

    gcloud projects delete PROJECT_ID
    

    Замените PROJECT_ID идентификатором проекта, который вы использовали для быстрого запуска. Идентификатор проекта можно найти в Cloud console на странице Dashboard .