Создайте надстройку Google Workspace с помощью Node.js.

Создавайте надстройки Google Workspace в Cloud Functions, используя среду выполнения Node.js, которая работает в Gmail, Google Drive, Google Calendar, Google Docs, Google Sheets и Google Slides.

Цели

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

Предпосылки

Настройте свою среду

Откройте свой облачный проект в консоли Google Cloud.

  1. В консоли Google Cloud перейдите на страницу выбора проекта .

    Выберите облачный проект

  2. Выберите нужный проект Google Cloud. Или нажмите «Создать проект» и следуйте инструкциям на экране. При создании проекта Google Cloud может потребоваться включить для него оплату .

Настройте экран согласия OAuth

Для дополнений Google Workspace требуется настройка экрана согласия. Настройка экрана согласия OAuth для вашего дополнения определяет, что Google будет показывать пользователям.

  1. В консоли Google Cloud перейдите в >Google Auth platform > Брендинг .

    Перейти к брендингу

  2. Если вы уже настроили Google Auth platform, вы можете настроить следующие параметры экрана согласия OAuth в разделах «Брендинг» , «Аудитория» и «Доступ к данным» . Если вы видите сообщение: Google Auth platform пока не настроено , нажмите «Начать» :
    1. В разделе «Информация о приложении» в поле «Имя приложения » введите имя приложения.
    2. В поле Адрес электронной почты службы поддержки пользователей выберите адрес электронной почты службы поддержки, по которому пользователи смогут связаться с вами, если у них возникнут вопросы относительно их согласия.
    3. Нажмите «Далее» .
    4. В разделе Аудитория выберите Внутренняя .
    5. Нажмите «Далее» .
    6. В разделе «Контактная информация» введите адрес электронной почты , на который вы можете получать уведомления о любых изменениях в вашем проекте.
    7. Нажмите «Далее» .
    8. В разделе Готово ознакомьтесь с Политикой обработки данных пользователей API служб Google и, если вы согласны, выберите Я согласен с Политикой обработки данных пользователей API служб Google .
    9. Нажмите «Продолжить» .
    10. Нажмите «Создать» .
  3. На данный момент вы можете пропустить добавление областей действия. В будущем при создании приложения для использования за пределами вашей организации Google Workspace необходимо изменить тип пользователя на «Внешний» . Затем добавьте области действия авторизации, необходимые вашему приложению. Подробнее см. в полном руководстве по настройке согласия OAuth .

Создание и развертывание облачной функции

  1. В консоли Google Cloud нажмите «Активировать Cloud Shell» . Активировать кнопку Cloud Shell .

    Активировать Cloud Shell

    Терминал Cloud Shell открывается и запускает сеанс в нижней панели консоли Google Cloud.

  2. Нажмите «Авторизовать» , чтобы подготовить ресурсы и подключиться к Cloud Shell.

  3. В терминале Cloud Shell включите API Cloud Functions, API Cloud Build, API дополнений Google Workspace и API Compute Engine:

    gcloud services enable cloudfunctions.googleapis.com  \
                        cloudbuild.googleapis.com  \
                        gsuiteaddons.googleapis.com  \
                        compute.googleapis.com
    
  4. Запустите редактор Cloud Shell, нажавРедактор кода кнопка Откройте редактор на панели инструментов окна Cloud Shell.

    Этот встроенный редактор кода обеспечивает удобство просмотра и редактирования файлов в той же среде, где создаются и развертываются проекты.

  5. В пустом каталоге создайте файл function.js со следующим примером кода:

    /**
     * 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"
                         }
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      };
    }
    
  6. В том же каталоге создайте файл package.json со следующим примером кода:

    {
      "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
      }
    }
    
  7. Вернитесь в терминал Cloud Shell, нажав Активировать Cloud Shell кнопка Откройте Терминал .

  8. Добавьте роль Cloud Build Service Account ( roles/cloudbuild.builds.builder ) к учетной записи службы Compute Engine по умолчанию.

    Сначала настройте разрешение учетной записи службы:

    export PROJECT_ID=$(gcloud config get project)
    export SERVICE_ACCOUNT_NAME=$(gcloud compute project-info describe \
      --format="value(defaultServiceAccount)")
    

    Затем предоставьте отсутствующей учетной записи службы разрешение:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:$SERVICE_ACCOUNT_NAME" \
      --role="roles/cloudbuild.builds.builder"
    
  9. Для развертывания функции выполните следующую команду:

    gcloud functions deploy loadHomePage --runtime nodejs22 --trigger-http
    

    При появлении запроса укажите, что вы не разрешаете неавторизованные вызовы функции. Развёртывание функции может занять несколько минут.

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

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

    gcloud workspace-add-ons get-authorization
    
  2. Назначьте сервисной учётной записи роль cloudfunctions.invoker . Замените SERVICE_ACCOUNT_EMAIL полем serviceAccountEmail из предыдущего шага.

    gcloud functions add-iam-policy-binding loadHomePage \
       --role roles/cloudfunctions.invoker \
       --member serviceAccount:SERVICE_ACCOUNT_EMAIL
    
  3. Получите URL-адрес развёрнутой функции. Чтобы получить URL-адрес, выполните следующую команду и найдите поле url в разделе httpsTrigger :

    gcloud functions describe loadHomePage
    
  4. Вернитесь в редактор Cloud Shell, нажавРедактор кода кнопка Откройте редактор .

  5. В том же каталоге, где находится package.json , создайте файл 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": {},
        "httpOptions": {
          "granularOauthPermissionSupport": "OPT_IN"
        }
      }
    }
    
  6. Вернитесь в Cloud Shell Terminal, чтобы создать развертывание:

    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. Чтобы избежать расходов на ресурсы, используемые в этом кратком руководстве, удалите проект Cloud:

    gcloud projects delete PROJECT_ID
    

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

Чтобы добавить дополнительные функции в надстройку Google Workspace, ознакомьтесь со следующими материалами: