> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/expert-center/ru/faq-and-troubleshooting/iot-logic/how-to-connect-an-iot-logic-webhook-node-to-google-sheets.md).

# Как подключить узел Вебхук IoT Logic к Google Таблицам

Отправляйте телематические параметры из потока IoT Logic в Google Таблицы с помощью узла Вебхук. Описаны настройка узла, Apps Script и уровни доступа при развертывании.

В этом руководстве вы узнаете, как отправлять телематические параметры или значения внешнего источника данных из потока IoT Logic Navixy в Google Sheets с помощью узла Вебхук.

<img src="https://2371323805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIgDb43gtyXcm1Av4h1np%2Fuploads%2FN1ViKhMchLe2tVWC9rW5%2Funknown.png?alt=media&amp;token=21f441d8-e064-4336-afcc-c22c5e1779a0" alt="" height="236" width="624">

## Шаг 1. Добавление узла Вебхук

После создания потока IoT Logic добавьте узел Вебхук и подключите его к триггеру, который инициирует передачу данных.

Узел Вебхук работает по принципу fire-and-forget. Это означает, что он немедленно отправляет HTTP-запрос при срабатывании, но не ожидает и не сохраняет ответ сервера.

После добавления узла Вебхук настройте его следующим образом.

#### URL

Введите URL веб-приложения Google Apps Script, связанного с таблицей Google Sheet, в которую вы хотите отправлять информацию.

#### Заголовки

Добавьте следующий HTTP-заголовок:

| Ключ            | Значение         |
| --------------- | ---------------- |
| Тип содержимого | application/json |

#### Тело

Тело запроса должно быть в формате JSON. Оно должно включать ключ аутентификации и любые данные, которые вы хотите отправить в Google Таблицы.

Пример:

*{*

*"key": "MY\_SUPER\_SECRET\_123",*

*"событие": "утренний отчет по топливу",*

*"device\_id": "{{device\_label}}",*&#x20;

*"timestamp": "{{comb\_current\_time}}"*

*}*

Вы можете включить любые дополнительные атрибуты IoT Logic или параметры телеметрии, используя соответствующие заполнители.

Примечание: поле "key" обязательно, если ваш Google Apps Script использует общий секрет для аутентификации входящих запросов Вебхука. Замените "MY\_SUPER\_SECRET\_123" на секрет, настроенный в вашем Google Apps Script.

<img src="https://2371323805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIgDb43gtyXcm1Av4h1np%2Fuploads%2FRrdnGQ2FtONud0qqk7Gn%2Funknown.png?alt=media&amp;token=50444694-7408-4931-9d78-f7b713cb468b" alt="" height="497" width="309">

## Шаг 2. Настройте Google Таблицу

Откройте Google Таблицу, нажмите Extensions, а затем выберите Apps Script.

<img src="https://2371323805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIgDb43gtyXcm1Av4h1np%2Fuploads%2FxBPxi9Ahrz6hYj3isiO4%2Funknown.png?alt=media&amp;token=333a133e-0728-42a2-9439-c9e77e130727" alt="" height="277" width="624">

Это откроет файл Code.gs, в который вы добавите скрипт, отвечающий за получение запросов Вебхука и запись данных в электронную таблицу.

<img src="https://2371323805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIgDb43gtyXcm1Av4h1np%2Fuploads%2FzGi71dP0c0yoqEGsjbbB%2Funknown.png?alt=media&amp;token=9ceac0d9-d50c-4cf2-84b2-2f275925e9a4" alt="" height="249" width="624">

Следующий пример кода можно использовать для получения значений, отправленных из узла Вебхук, и добавления их в вашу Google Таблицу в виде новой строки.

*function doPost(e) {*

*var SECRET\_KEY = "MY\_SUPER\_SECRET\_123";*

*var data = JSON.parse(e.postData.contents);*

*if (data.key !== SECRET\_KEY) {*

*return ContentService.createTextOutput("Access Denied").setMimeType(ContentService.MimeType.TEXT);*

*}*

*var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();*

*sheet.appendRow(\[*

*new Date(),*

*data.name || "",*

*data.device\_id || "",*

*data.longitud || "",*

*data.latitud || ""*

*]);*

*return ContentService.createTextOutput("Успех").setMimeType(ContentService.MimeType.TEXT);*

*}*

**Примечание**: Замените приведенный выше пример кода скриптом, указанным ниже. Вы также можете настроить поля так, чтобы они соответствовали данным, отправляемым из вашего Вебхук IoT Logic.

Скрипт выше работает как HTTP POST-эндпоинт, который принимает запросы, отправляемые из узла Вебхук IoT Logic.

При каждом поступлении запроса скрипт сначала проверяет общий секрет (SECRET\_KEY), чтобы гарантировать, что записывать данные в Google Sheet разрешено только авторизованным запросам Вебхук. Если проверка подлинности успешна, JSON-полезная нагрузка разбирается, и указанные параметры — такие как временная метка приема, имя устройства, ID устройства, долгота, широта или любые другие телеметрические значения — автоматически добавляются в электронную таблицу как новая строка.

Наконец, скрипт возвращает ответ, указывающий, была ли операция успешно выполнена (Успех) или отклонена из-за недействительного ключа аутентификации (Доступ запрещен).

Важно: Имена полей, используемые в скрипте, должны в точности совпадать с именами параметров, передаваемыми Вебхуком IoT Logic. К каждому значению обращаются с помощью синтаксиса data.\<parameter\_name>, где \<parameter\_name> соответствует свойству JSON, полученному в запросе.

Например, если Вебхук отправляет следующий параметр:

*{*

*"уровень\_топлива": 68,5*

*}*

Apps Script должен ссылаться на него как:

*data.Уровень топлива\_level*

Если скрипт вместо этого ссылается на:

*data.fuel\_level\_march*

Значение не будет заполнено, поскольку во входящей полезной нагрузке JSON нет параметра с таким именем. В результате соответствующая ячейка в Google Sheets останется пустой.

Это одна из самых распространенных ошибок настройки при интеграции Вебхук IoT Logic с Google Sheets. Всегда проверяйте, что имена параметров в теле Вебхук точно совпадают с теми, что используются в Apps Script, включая регистр, символы подчеркивания и написание.

После того как вы завершите сопоставление тела JSON с кодом Apps Script, нажмите кнопку Deploy.

В разделе «Кто имеет доступ» убедитесь, что выбрано «Любой».

Этот параметр требуется, потому что когда Узел Вебхук отправляет HTTP POST-запрос на URL веб-приложения Google Apps Script, запрос принимается как анонимный клиент (без учетных данных вашей учетной записи Google).

Если уровень доступа настроен как:

* Только я — Google отклонит запрос или потребует аутентификацию.
* Любой — Google примет POST-запрос без необходимости входа отправителя в систему.

По этой причине «Любой» — рекомендуемый уровень доступа при получении запросов от внешних поставщиков Вебхук, таких как Navixy, ngrok, Postman, curl или любой другой сторонний HTTP-клиент.<br>

<img src="https://2371323805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIgDb43gtyXcm1Av4h1np%2Fuploads%2FpUD1naI3DbunN0V3zmhD%2Funknown.png?alt=media&amp;token=aa405c86-ae6d-48ca-bb88-e00bc7290d45" alt="" height="409" width="390">

Выберите New Deployment, а затем выберите Web App в меню типа развертывания. Процесс развертывания может занять несколько минут. После его завершения будет сгенерирован URL Web App. Скопируйте этот URL и вставьте его в поле URL Узел Вебхук в вашем потоке IoT Logic. URL Web App — это конечная точка, которая будет принимать HTTP POST-запросы, отправляемые Узел Вебхук.

<img src="https://2371323805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIgDb43gtyXcm1Av4h1np%2Fuploads%2Fk4TCKGYMxwcPb4kzvPxo%2Funknown.png?alt=media&amp;token=c0e5a05f-5a90-43d5-82b3-c5c068dc5b35" alt="" height="494.99999999999994" width="624">

<img src="https://2371323805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIgDb43gtyXcm1Av4h1np%2Fuploads%2FH8Ullj2zVuFZs4lHGItx%2Funknown.png?alt=media&amp;token=f63312b5-a3fa-40c2-83e0-ef977a06fd05" alt="" height="492" width="624">

#### Обновление Apps Script

Если позже вам потребуется изменить Apps Script, не нужно создавать новое развертывание.

Вместо этого нажмите Deploy → Manage Deployments, выберите существующее развертывание и нажмите Edit (значок карандаша). После сохранения и повторного развертывания обновленной версии внесенные в сценарий изменения сразу вступят в силу, при этом URL Web App останется тем же.

Это позволяет обновлять сценарий без необходимости изменять конфигурацию Вебхук в IoT Logic.

<img src="https://2371323805-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIgDb43gtyXcm1Av4h1np%2Fuploads%2FsfpLsoQucj997CWAc2oS%2Funknown.png?alt=media&amp;token=7270bc46-c379-47a1-91b3-e6b43edd8d7a" alt="" height="613" width="624">

После выполнения всех шагов, описанных в этом руководстве, соединение между IoT Logic и Google Sheets должно быть успешно установлено.

Эта интеграция предоставляет простой и эффективный способ записывать телеметрические данные, внешние параметры или пользовательские атрибуты IoT Logic для отчетности, анализа, аудита или интеграции с другими инструментами Google Workspace.

<br>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://navixy.com/docs/expert-center/ru/faq-and-troubleshooting/iot-logic/how-to-connect-an-iot-logic-webhook-node-to-google-sheets.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
