Разработчику дополнений для Google Workspace может потребоваться отладка кода для тестирования изменений или устранения сложных проблем. Отладка дополнений для Google Workspace может осуществляться различными способами в зависимости от архитектуры вашего приложения, его функций, способа развертывания и ваших предпочтений.
На этой странице объясняется, как отлаживать HTTP-дополнение Google Workspace с помощью ngrok — унифицированной платформы для входящего трафика, которую можно использовать для тестирования локальных сред разработки. В этом руководстве вы будете тестировать изменения кода в локальной среде и устранять неполадки в удаленной среде.
Отладка из локальной среды разработки.
В этом разделе вы взаимодействуете с надстройкой Google Workspace, которая выполняется в вашей локальной среде.
Предварительные требования
Node.js
- В вашей локальной среде должны быть установлены последние версии
nodeиnpm. В вашей локальной среде должна быть установлена последняя версия
nodemon. Она используется для автоматической перезагрузки:npm install -g nodemonПроект Google Cloud . Вы можете ознакомиться с разделами «Предварительные требования» и «Настройка среды» в руководстве по быстрому запуску .
Код дополнения Google Workspace для отладки в локальной среде. В данном руководстве для наглядности мы используем функции предварительного просмотра из примера кода
3p-resourcesиз репозитория GitHubgoogleworkspace/add-ons-samples.В локальной среде должна быть установлена интегрированная среда разработки (IDE), способная выполнять отладку. В данном руководстве для наглядности мы используем IDE
Visual Studio Codeи её стандартные функции отладки .Аккаунт
ngrok.В вашей локальной среде должна быть установлена и инициализирована последняя версия
gcloud.
Python
- В вашей локальной среде должна быть установлена последняя версия
python3. - В локальной среде должны быть установлены последние версии
pipиvirtualenv. Они используются для управления пакетами Python и виртуальными средами соответственно. - Проект Google Cloud . Вы можете ознакомиться с разделами «Предварительные требования» и «Настройка среды» в руководстве по быстрому запуску .
- Код дополнения Google Workspace для отладки в локальной среде. В данном руководстве для наглядности мы используем функции предварительного просмотра из примера кода
3p-resourcesиз репозитория GitHubgoogleworkspace/add-ons-samples. - В локальной среде должна быть установлена интегрированная среда разработки (IDE), способная выполнять отладку. В данном руководстве для наглядности мы используем IDE
Visual Studio Codeи её стандартные функции отладки . - Аккаунт
ngrok. - В вашей локальной среде должна быть установлена и инициализирована последняя версия
gcloud.
Java
- В вашей локальной среде должна быть установлена последняя стабильная версия
Java SE 11's JDK. - В локальной среде должна быть установлена последняя версия
Apache Maven. Она используется для управления проектами на Java. - Проект Google Cloud . Вы можете ознакомиться с разделами «Предварительные требования» и «Настройка среды» в руководстве по быстрому запуску .
- Код дополнения Google Workspace для отладки в локальной среде. В данном руководстве для наглядности мы используем функции предварительного просмотра из примера кода
3p-resourcesиз репозитория GitHubgoogleworkspace/add-ons-samples. - В локальной среде должна быть установлена интегрированная среда разработки (IDE), способная выполнять отладку. В данном руководстве для наглядности мы используем IDE
Visual Studio Codeи её стандартные функции отладки . - Аккаунт
ngrok. - В вашей локальной среде должна быть установлена и инициализирована последняя версия
gcloud.
Сделайте сервис localhost общедоступным.
Для доступа дополнения Google Workspace к локальной среде необходимо подключить её к интернету. Приложение ngrok используется для перенаправления HTTP-запросов, отправляемых на общедоступный URL-адрес, в вашу локальную среду.
- Войдите в свою учетную запись
ngrokв локальной среде браузера. - Установите приложение и настройте свой
authtokenв локальной среде. - Создайте статический домен в своей учетной записи
ngrok; в инструкциях этого руководства он обозначается какNGROK_STATIC_DOMAIN.
Создайте и установите развертывание дополнения.
Настройте надстройку Google Workspace так, чтобы все HTTP-запросы отправлялись на ваш статический домен. Ваш файл развертывания должен выглядеть следующим образом:
{ "oauthScopes": [ "https://www.googleapis.com/auth/workspace.linkpreview", "https://www.googleapis.com/auth/workspace.linkcreate" ], "addOns": { "common": { "name": "Manage support cases", "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png", "layoutProperties": { "primaryColor": "#dd4b39" } }, "docs": { "linkPreviewTriggers": [ { "runFunction": "NGROK_STATIC_DOMAIN", "patterns": [ { "hostPattern": "example.com", "pathPrefix": "support/cases" }, { "hostPattern": "*.example.com", "pathPrefix": "cases" }, { "hostPattern": "cases.example.com" } ], "labelText": "Support case", "localizedLabelText": { "es": "Caso de soporte" }, "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png" } ], "createActionTriggers": [ { "id": "createCase", "labelText": "Create support case", "localizedLabelText": { "es": "Crear caso de soporte" }, "runFunction": "$URL2", "logoUrl": "https://developers.google.com/workspace/add-ons/images/support-icon.png" } ] }, "httpOptions": { "granularOauthPermissionSupport": "OPT_IN" } } }Замените
NGROK_STATIC_DOMAINна статический домен в вашей учетной записиngrok.Укажите проект Google Cloud для использования:
gcloud config set project PROJECT_IDПолучите новые учетные данные пользователя для использования в качестве учетных данных по умолчанию для приложения :
gcloud auth application-default loginЗамените
PROJECT_IDна идентификатор проекта Google Cloud, к которому относится приложение.Создайте развертывание:
gcloud workspace-add-ons deployments create manageSupportCases \ --deployment-file=DEPLOYMENT_FILE_PATHЗамените
DEPLOYMENT_FILE_PATHна путь к вашему файлу развертывания.Установите развертывание:
gcloud workspace-add-ons deployments install manageSupportCasesРисунок 2. Дополнение Google Workspace отправляет все свои HTTP-запросы на статический домен. Общедоступный сервис `ngrok` выступает в качестве моста между дополнением Google Workspace и кодом приложения, который выполняется локально.
Протестируйте надстройку Google Workspace.
Вы можете локально развертывать, тестировать, отлаживать и автоматически перезагружать дополнение Google Workspace.
Node.js
В установленной локально среде среды разработки
Visual Studio Codeвыполните следующие действия:- В новом окне откройте папку
add-ons-samples/node/3p-resources. Настройте приложение для локального запуска и автоматической перезагрузки в режиме отладки, добавив одну зависимость и два скрипта в файл
package.json:{ ... "dependencies": { ... "@google-cloud/functions-framework": "^3.3.0" }, "scripts": { ... "start": "npx functions-framework --target=createLinkPreview --port=9000", "debug-watch": "nodemon --watch ./ --exec npm start" } ... }Установите приложение из корневого каталога:
npm installСоздайте и настройте запуск с именем
Debug Watch, который будет запускать скриптdebug-watch, создав файл.vscode/launch.jsonв корневом каталоге:{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "launch", "name": "Debug Watch", "cwd": "${workspaceRoot}", "runtimeExecutable": "npm", "runtimeArgs": ["run-script", "debug-watch"] }] }Добавьте точку останова, которая приостанавливает обработку HTTP-запросов в файле
index.js, и запустите приложение и отладку, используя ранее добавленную конфигурациюDebug Watch. Теперь приложение работает и принимает HTTP-запросы на порту9000.
Рисунок 3. Приложение запущено и принимает HTTP-запросы на порту 9000.
- В новом окне откройте папку
Запустите приложение
ngrokв локальной среде:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Замените
NGROK_STATIC_DOMAINна статический домен в вашей учетной записиngrok. Теперь все запросы будут перенаправляться в вашу локальную среду и на порт, используемый приложением.
Рисунок 4. Терминал с запущенным и перенаправляющим сервером ngrok.Приложение
ngrokтакже запускает веб-интерфейс на вашем локальном компьютере. Вы можете отслеживать всю активность, открыв его в браузере.
Рисунок 5. Веб-интерфейс приложения ngrok, на котором отсутствуют HTTP-запросы.Протестируйте надстройку Google Workspace, просмотрев URL-адрес обращения в новом документе Google Docs с помощью тестовой учетной записи:
Создайте документ Google Docs.
Введите следующую ссылку и нажмите
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Перейдите по ссылке.
В локальной среде
Visual Studio Codeвы увидите, что выполнение приостановлено на установленной точке останова.
Рисунок 6. Выполнение приостановлено на установленной точке останова. Если возобновить выполнение из отладчика
Visual Studio Codeдо истечения времени ожидания для дополнений Google Workspace, дополнение Google Workspace отобразит предварительный просмотр ссылки в документе Google из кэша.Вы можете проверить журналы HTTP-запросов и ответов через веб-интерфейс, размещенный в локальной среде приложения
ngrok.
Рисунок 7. HTTP-запрос от веб-интерфейса, размещенного на сервере приложения ngrok.Чтобы изменить поведение приложения, замените
CaseнаCase:в строке51файлаindex.js. После сохранения файлаnodemonавтоматически перезагрузит приложение с обновленным исходным кодом, иVisual Studio Codeостанется в режиме отладки.
Рисунок 8. Приложение запущено и принимает HTTP-запросы на порту 9000после загрузки изменений в коде.На этот раз, вместо того чтобы кликать по ссылке и ждать несколько секунд в новом документе Google Docs, вы можете выбрать последний HTTP-запрос, зарегистрированный в веб-интерфейсе приложения
ngrokв вашей локальной среде, и нажатьReplay. Как и в прошлый раз, ваше дополнение Google Workspace не ответит, потому что оно находится в процессе отладки .Если возобновить выполнение из отладчика
Visual Studio Code, то в веб-интерфейсе приложенияngrokв вашей локальной среде вы увидите, что приложение генерирует ответ с обновленной версией карточки предварительного просмотра.
Python
В установленной локально среде среды разработки
Visual Studio Codeвыполните следующие действия:- В новом окне откройте папку
add-ons-samples/python/3p-resources/create_link_preview. Создайте виртуальное окружение для
envи активируйте его:virtualenv envsource env/bin/activateУстановите все зависимости проекта с помощью
pipв виртуальной среде:pip install -r requirements.txtСоздайте файл
.vscode/launch.jsonв корневом каталоге и настройте запуск с именемDebug Watch, который будет запускать приложение из модуляfunctions-frameworkна порту9000в режиме отладки в виртуальной средеenv:{ "version": "0.2.0", "configurations": [{ "type": "python", "request": "launch", "name": "Debug Watch", "python": "${workspaceFolder}/env/bin/python3", "module": "functions_framework", "args": [ "--target", "create_link_preview", "--port", "9000", "--debug" ] }] }Добавьте точку останова, которая приостанавливает обработку HTTP-запросов в файле
main.py, и запустите приложение и отладку, добавив ранее настроенную конфигурациюDebug Watch. Теперь приложение работает и принимает HTTP-запросы на порту9000.
Рисунок 3. Приложение запущено и принимает HTTP-запросы на порту 9000.
- В новом окне откройте папку
Запустите приложение
ngrokв локальной среде:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Замените
NGROK_STATIC_DOMAINна статический домен в вашей учетной записиngrok. Теперь все запросы будут перенаправляться в вашу локальную среду и на порт, используемый приложением.
Рисунок 4. Терминал с запущенным и перенаправляющим сервером ngrok.Приложение
ngrokтакже запускает веб-интерфейс на вашем локальном компьютере. Отслеживайте все действия, открыв его в браузере.
Рисунок 5. Веб-интерфейс приложения ngrok, на котором отсутствуют HTTP-запросы.Протестируйте надстройку Google Workspace, просмотрев URL-адрес обращения в новом документе Google Docs с помощью тестовой учетной записи:
Создайте документ Google Docs.
Введите следующую ссылку и нажмите
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Перейдите по ссылке.
В локальной среде
Visual Studio Codeвы увидите, что выполнение приостановлено на установленной точке останова.
Рисунок 6. Выполнение приостановлено на установленной точке останова. Если возобновить выполнение из отладчика
Visual Studio Codeдо истечения времени ожидания для дополнений Google Workspace, дополнение Google Workspace отобразит предварительный просмотр ссылки в документе Google из кэша.Вы можете проверить журналы HTTP-запросов и ответов через веб-интерфейс, размещенный в локальной среде приложения
ngrok.
Рисунок 7. HTTP-запрос от веб-интерфейса, размещенного на сервере приложения ngrok.Чтобы изменить поведение приложения, замените
CaseнаCase:в строке56файлаmain.pyПосле сохранения файлаVisual Studio Codeавтоматически перезагрузит приложение с обновленным исходным кодом и останется в режиме отладки.
Рисунок 8. Приложение запущено и принимает HTTP-запросы на порту 9000после загрузки изменений в коде.На этот раз, вместо того чтобы кликать по ссылке и ждать несколько секунд в новом документе Google Docs, вы можете выбрать последний HTTP-запрос, зарегистрированный в веб-интерфейсе приложения
ngrokв вашей локальной среде, и нажатьReplay. Как и в прошлый раз, ваше дополнение Google Workspace не ответит, потому что оно находится в процессе отладки .Если возобновить выполнение из отладчика
Visual Studio Code, то в веб-интерфейсе приложенияngrokв вашей локальной среде вы увидите, что приложение генерирует ответ с обновленной версией карточки предварительного просмотра.
Java
В установленной локально среде среды разработки
Visual Studio Codeвыполните следующие действия:- В новом окне откройте папку
add-ons-samples/java/3p-resources. Настройте проект Maven для запуска приложения
CreateLinkPreviewна порту9000локально, добавив плагин сборки Cloud Functions Frameworkfunction-maven-pluginв файлpom.xml:... <plugin> <groupId>com.google.cloud.functions</groupId> <artifactId>function-maven-plugin</artifactId> <version>0.11.0</version> <configuration> <functionTarget>CreateLinkPreview</functionTarget> <port>9000</port> </configuration> </plugin> ...Теперь вы можете запустить его локально в режиме отладки:
mvnDebug function:run Preparing to execute Maven in debug mode Listening for transport dt_socket at address: 8000Создайте файл
.vscode/launch.jsonв корневом каталоге и настройте запуск с именемRemote Debug Watch, который будет подключаться к приложению, ранее запущенному на порту8000:{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Remote Debug Watch", "projectName": "http-function", "hostName": "localhost", "port": 8000 }] }Добавьте точку останова, которая приостанавливает обработку HTTP-запросов в файле
CreateLinkPreview.java, и начните подключение и отладку с помощью конфигурацииRemote Debug Watchдобавленной ранее. Теперь приложение работает и принимает HTTP-запросы на порту9000.
Рисунок 3. Приложение запущено и принимает HTTP-запросы на порту 9000.
- В новом окне откройте папку
Запустите приложение
ngrokв локальной среде:ngrok http --domain=NGROK_STATIC_DOMAIN 9000Замените
NGROK_STATIC_DOMAINна статический домен в вашей учетной записиngrok. Теперь все запросы будут перенаправляться в вашу локальную среду и на порт, используемый приложением.
Рисунок 4. Терминал с запущенным и перенаправляющим сервером ngrok.Приложение
ngrokтакже запускает веб-интерфейс на вашем локальном компьютере. Отслеживайте все действия, открыв его в браузере.
Рисунок 5. Веб-интерфейс приложения ngrok, на котором отсутствуют HTTP-запросы.Протестируйте надстройку Google Workspace, просмотрев URL-адрес обращения в новом документе Google Docs с помощью тестовой учетной записи:
Создайте документ Google Docs.
Введите следующую ссылку и нажмите
enter:https://example.com/support/case/?name=Name1&description=Description1&priority=P1Перейдите по ссылке.
В локальной среде
Visual Studio Codeвы увидите, что выполнение приостановлено на установленной точке останова.
Рисунок 6. Выполнение приостановлено на установленной точке останова. Если возобновить выполнение из отладчика
Visual Studio Codeдо истечения времени ожидания для дополнений Google Workspace, дополнение Google Workspace отобразит предварительный просмотр ссылки в документе Google из кэша.Вы можете проверить журналы HTTP-запросов и ответов через веб-интерфейс, размещенный в локальной среде приложения
ngrok.
Рисунок 7. HTTP-запрос от веб-интерфейса, размещенного на сервере приложения ngrok.Чтобы изменить поведение приложения, замените
CaseнаCase:в строке78файлаCreateLinkPreview.java, перезапустите процессmvnDebugи повторно запуститеRemote Debug Watch, чтобы снова подключиться и возобновить отладку .На этот раз, вместо того чтобы кликать по ссылке и ждать несколько секунд в новом документе Google Docs, вы можете выбрать последний HTTP-запрос, зарегистрированный в веб-интерфейсе приложения
ngrokв вашей локальной среде, и нажатьReplay. Как и в прошлый раз, ваше дополнение Google Workspace не ответит, потому что оно находится в процессе отладки .Если возобновить выполнение из отладчика
Visual Studio Code, то в веб-интерфейсе приложенияngrokв вашей локальной среде вы увидите, что приложение генерирует ответ с обновленной версией карточки предварительного просмотра.
Отладка из удалённой среды
В этом разделе вы взаимодействуете с надстройкой Google Workspace, которая выполняется в удаленной среде.
Предварительные требования
- Ваше дополнение Google Workspace развернуто и установлено.
- Ваше приложение работает в удаленной среде с включенным отладчиком на заданном порту, который в инструкциях данного руководства обозначен как
REMOTE_DEBUG_PORT. - Ваша локальная среда может подключаться к удаленной среде
ssh. - В вашей локальной среде установлена интегрированная среда разработки (IDE), которая позволяет выполнять отладку. В данном руководстве для наглядности мы используем IDE
Visual Studio Codeи её стандартные функции отладки .
Объедините локальные и удаленные среды.
В локальной среде, из которой вы хотите установить соединение с отладочным клиентом, настройте SSH-туннель:
ssh -L LOCAL_DEBUG_PORT:localhost:REMOTE_DEBUG_PORT REMOTE_USERNAME@REMOTE_ADDRESSЗамените следующее:
-
LOCAL_DEBUG_PORT: Порт отладки в вашей локальной среде. -
REMOTE_USERNAME: Имя пользователя в вашей удалённой среде. -
REMOTE_ADDRESS: Адрес вашей удаленной среды. -
REMOTE_DEBUG_PORT: Порт отладки в вашей удаленной среде.
Теперь отладочный порт в вашей локальной среде связан с отладочным портом в вашей удаленной среде.
Начать отладку
В установленной локально среде среды разработки Visual Studio Code выполните следующие действия:
- В новом окне откройте исходный код вашего приложения.
Создайте файл
.vscode/launch.jsonв корневом каталоге и настройте запуск с именемDebug Remote, который будет подключаться к порту отладки в вашей локальной среде:Node.js
{ "version": "0.2.0", "configurations": [{ "type": "node", "request": "attach", "name": "Debug Remote", "address": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }Python
{ "version": "0.2.0", "configurations": [{ "type": "python", "request": "attach", "name": "Debug Remote", "connect": { "host": "127.0.0.1", "port": LOCAL_DEBUG_PORT } }] }Java
{ "version": "0.2.0", "configurations": [{ "type": "java", "request": "attach", "name": "Debug Remote", "hostName": "127.0.0.1", "port": LOCAL_DEBUG_PORT }] }Замените
LOCAL_DEBUG_PORTна отладочный порт в вашей локальной среде.Добавьте точку останова в исходный код вашего приложения, которая приостанавливает обработку HTTP-запросов, и начните запуск и отладку, добавив предварительно настроенную
Debug Remote.Взаимодействуйте с установленным дополнением Google Workspace. Ваше дополнение Google Workspace не отвечает, потому что оно активно отлаживается в среде разработки
Visual Studio Code.
Связанные темы
- Узнайте, как запрашивать журналы ошибок .