Создавайте надстройки Google Workspace в Cloud Functions, используя среду выполнения Node.js, которая работает в Gmail, Google Drive, Google Calendar, Google Docs, Google Sheets и Google Slides.
Цели
- Настройте свою среду.
- Создайте и разверните облачную функцию.
- Создайте и разверните дополнение.
- Установите дополнение.
Предпосылки
- Убедитесь, что вы включили выставление счетов для своего облачного проекта. Узнайте, как проверить статус выставления счетов для ваших проектов . 
- Cloud SDK настраивается с помощью проекта Cloud. 
Настройте свою среду
Откройте свой облачный проект в консоли Google Cloud.
- В консоли Google Cloud перейдите на страницу выбора проекта .
- Выберите нужный проект Google Cloud. Или нажмите «Создать проект» и следуйте инструкциям на экране. При создании проекта Google Cloud может потребоваться включить для него оплату .
Настройте экран согласия OAuth
Для дополнений Google Workspace требуется настройка экрана согласия. Настройка экрана согласия OAuth для вашего дополнения определяет, что Google будет показывать пользователям.
- В консоли Google Cloud перейдите в >Google Auth platform > Брендинг .
- Если вы уже настроили Google Auth platform, вы можете настроить следующие параметры экрана согласия OAuth в разделах «Брендинг» , «Аудитория» и «Доступ к данным» . Если вы видите сообщение: Google Auth platform пока не настроено , нажмите «Начать» :
- В разделе «Информация о приложении» в поле «Имя приложения » введите имя приложения.
- В поле Адрес электронной почты службы поддержки пользователей выберите адрес электронной почты службы поддержки, по которому пользователи смогут связаться с вами, если у них возникнут вопросы относительно их согласия.
- Нажмите кнопку «Далее» .
- В разделе Аудитория выберите Внутренняя .
- Нажмите кнопку «Далее» .
- В разделе «Контактная информация» введите адрес электронной почты , на который вы можете получать уведомления о любых изменениях в вашем проекте.
- Нажмите кнопку «Далее» .
- В разделе Готово ознакомьтесь с Политикой обработки данных пользователей API служб Google и, если вы согласны, выберите Я согласен с Политикой обработки данных пользователей API служб Google .
- Нажмите «Продолжить» .
- Нажмите «Создать» .
- На данный момент вы можете пропустить добавление областей действия. В будущем при создании приложения для использования за пределами вашей организации Google Workspace необходимо изменить тип пользователя на «Внешний» . Затем добавьте области действия авторизации, необходимые вашему приложению. Подробнее см. в полном руководстве по настройке согласия OAuth .
Создание и развертывание облачной функции
- В консоли Google Cloud нажмите «Активировать Cloud Shell» . - . - Терминал Cloud Shell открывается и запускает сеанс в нижней панели консоли Google Cloud. 
- Нажмите «Авторизовать» , чтобы подготовить ресурсы и подключиться к Cloud Shell. 
- В терминале 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
- Запустите редактор Cloud Shell, нажав  Откройте редактор на панели инструментов окна Cloud Shell. Откройте редактор на панели инструментов окна Cloud Shell.- Этот встроенный редактор кода обеспечивает удобство просмотра и редактирования файлов в той же среде, где создаются и развертываются проекты. 
- В пустом каталоге создайте файл - 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" } } ] } ] } } ] } }; }
- В том же каталоге создайте файл - package.jsonсо следующим примером кода:- { "dependencies": { "@google-cloud/functions-framework": "^3.0.0" } }
- Вернитесь в терминал Cloud Shell, нажав - Откройте Терминал . 
- Добавьте роль - 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"
- Для развертывания функции выполните следующую команду: - gcloud functions deploy loadHomePage --runtime nodejs22 --trigger-http- При появлении запроса укажите, что вы не разрешаете неавторизованные вызовы функции. Развёртывание функции может занять несколько минут. 
Создайте развертывание надстройки
- Найдите адрес электронной почты учетной записи службы для надстройки: - gcloud workspace-add-ons get-authorization
- Назначьте сервисной учётной записи роль - cloudfunctions.invoker. Замените SERVICE_ACCOUNT_EMAIL полем- serviceAccountEmailиз предыдущего шага.- gcloud functions add-iam-policy-binding loadHomePage \ --role roles/cloudfunctions.invoker \ --member serviceAccount:SERVICE_ACCOUNT_EMAIL
- Получите URL-адрес развёрнутой функции. Чтобы получить URL-адрес, выполните следующую команду и найдите поле - urlв разделе- httpsTrigger:- gcloud functions describe loadHomePage
- Вернитесь в редактор Cloud Shell, нажав  Откройте редактор . Откройте редактор .
- В том же каталоге, где находится - 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" } } }
- Вернитесь в Cloud Shell Terminal, чтобы создать развертывание: - gcloud workspace-add-ons deployments create quickstart \ --deployment-file=deployment.json
Установить дополнение
- Установите развертывание в режиме разработки: - gcloud workspace-add-ons deployments install quickstart
- Откройте или перезагрузите Gmail, чтобы увидеть дополнение. На панели инструментов справа найдите значок стакана. 
- Нажмите на значок, чтобы открыть дополнение. При необходимости авторизуйте дополнение. 
Необязательно: Очистка
Чтобы избежать списания средств с вашего счета, удалите созданные вами ресурсы:
- Удалите дополнение из своего аккаунта Google: - gcloud workspace-add-ons deployments uninstall quickstart
- Чтобы избежать расходов на ресурсы, используемые в этом кратком руководстве, удалите проект Cloud: - gcloud projects delete PROJECT_ID- Замените PROJECT_ID на идентификатор облачного проекта, который вы использовали для быстрого старта. Идентификатор облачного проекта можно найти в консоли Google Cloud на странице «Панель управления» . 
Похожие темы
Чтобы добавить дополнительные функции в надстройку Google Workspace, ознакомьтесь со следующими материалами:
- Создайте дополнение Google Workspace с использованием конечных точек HTTP
- Codelab: Создание надстройки Google Workspace с помощью Node.js и Cloud Run
- Предварительный просмотр ссылок с умными чипами