> 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/id/faq-and-troubleshooting/iot-logic/how-to-connect-an-iot-logic-webhook-node-to-google-sheets.md).

# Cara menghubungkan node Webhook IoT Logic ke Google Sheets

Kirim parameter telematika dari alur IoT Logic ke Google Sheets menggunakan node Webhook. Mencakup penyiapan node, Apps Script, dan tingkat akses penerapan.

Dalam panduan ini, Anda akan mempelajari cara mengirim parameter telematika atau nilai Sumber Data eksternal dari aliran Navixy IoT Logic ke Google Sheets menggunakan node Webhook.

<img src="https://3546701789-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">

## Langkah 1. Tambahkan node Webhook

Setelah aliran IoT Logic Anda dibuat, tambahkan node Webhook dan hubungkan ke pemicu yang akan memulai transmisi data.

Node Webhook bekerja sebagai mekanisme fire-and-forget. Ini berarti node tersebut mengirim permintaan HTTP segera saat dipicu, tetapi tidak menunggu atau menyimpan respons server.

Setelah menambahkan node Webhook, konfigurasikan sebagai berikut.

#### URL

Masukkan URL Web App Google Apps Script yang terkait dengan Google Sheet tempat Anda ingin mengirim informasi.

#### Header

Tambahkan header HTTP berikut:

| Kunci       | Nilai            |
| ----------- | ---------------- |
| Tipe konten | application/json |

#### Badan

Isi permintaan harus dalam format JSON. Isi tersebut harus menyertakan kunci autentikasi dan data apa pun yang ingin Anda kirim ke Google Sheets.

Contoh:

*{*

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

*"event": "laporan\_bahan\_bakar\_pagi",*

*"device\_id": "{{device\_label}}",*

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

*}*

Anda dapat menyertakan atribut IoT Logic atau parameter telemetri tambahan dengan menggunakan placeholder yang sesuai.

Catatan: bidang "key" diperlukan jika Google Apps Script Anda menggunakan rahasia bersama untuk mengautentikasi permintaan Webhook yang masuk. Ganti "MY\_SUPER\_SECRET\_123" dengan rahasia yang dikonfigurasikan di Google Apps Script Anda.

<img src="https://3546701789-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">

## Langkah 2. Siapkan Google Sheet

Buka Google Sheet Anda, klik Extensions, lalu pilih Apps Script.

<img src="https://3546701789-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">

Ini akan membuka file Code.gs, tempat Anda akan menambahkan skrip yang bertanggung jawab untuk menerima permintaan Webhook dan menulis data ke dalam spreadsheet.

<img src="https://3546701789-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">

Contoh kode berikut dapat digunakan untuk menerima nilai yang dikirim dari node Webhook dan menambahkannya sebagai baris baru di Google Sheet Anda.

*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("Success").setMimeType(ContentService.MimeType.TEXT);*

*}*

**Catatan**: Ganti contoh kode di atas dengan skrip yang disediakan di bawah. Anda juga dapat menyesuaikan bidang agar sesuai dengan data yang dikirim dari Webhook IoT Logic Anda.

Skrip di atas berfungsi sebagai endpoint HTTP POST yang menerima permintaan yang dikirim dari node Webhook IoT Logic.

Setiap kali sebuah permintaan diterima, skrip terlebih dahulu memvalidasi rahasia bersama (SECRET\_KEY) untuk memastikan bahwa hanya permintaan Webhook yang berwenang yang diizinkan menulis data ke Google Sheet. Jika autentikasi berhasil, payload JSON diurai dan parameter yang ditentukan—seperti stempel waktu penerimaan, nama perangkat, ID perangkat, bujur, lintang, atau nilai telemetri lainnya—secara otomatis ditambahkan sebagai baris baru di spreadsheet.

Akhirnya, skrip mengembalikan respons yang menunjukkan apakah operasi telah selesai dengan berhasil (Berhasil) atau ditolak karena kunci autentikasi yang tidak valid (Akses Ditolak).

Penting: Nama field yang digunakan dalam skrip harus persis cocok dengan nama parameter yang dikirim oleh IoT Logic Webhook. Setiap nilai diakses menggunakan sintaks data.\<parameter\_name>, di mana \<parameter\_name> sesuai dengan properti JSON yang diterima dalam permintaan.

Misalnya, jika Webhook mengirim parameter berikut:

*{*

*"level Bahan bakar": 68,5*

*}*

Apps Script harus merujuknya sebagai:

*data.fuel\_level*

Jika skrip justru mereferensikan:

*data level Bahan bakar Maret*

Nilai tersebut tidak akan terisi karena tidak ada parameter dengan nama itu dalam payload JSON yang masuk. Akibatnya, sel yang sesuai di Google Sheets akan tetap kosong.

Ini adalah salah satu kesalahan konfigurasi yang paling umum saat mengintegrasikan IoT Logic Webhook dengan Google Sheets. Selalu verifikasi bahwa nama parameter di isi Webhook persis cocok dengan yang digunakan di Apps Script, termasuk huruf kapital, garis bawah, dan ejaannya.

Setelah Anda selesai mencocokkan isi JSON dengan kode Apps Script Anda, klik tombol Deploy.

Di bawah Who has access, pastikan untuk memilih Anyone.

Pengaturan ini diperlukan karena ketika simpul Webhook mengirim permintaan HTTP POST ke URL Web App Google Apps Script, permintaan tersebut diterima sebagai klien anonim (tanpa kredensial akun Google Anda).

Jika tingkat akses dikonfigurasi sebagai:

* Only myself – Google akan menolak permintaan atau meminta autentikasi.
* Anyone – Google akan menerima permintaan POST tanpa mewajibkan pengirim untuk masuk.

Karena alasan ini, Anyone adalah tingkat akses yang direkomendasikan saat menerima permintaan dari penyedia webhook eksternal seperti Navixy, ngrok, Postman, curl, atau klien HTTP pihak ketiga lainnya.<br>

<img src="https://3546701789-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">

Pilih New Deployment, lalu pilih Web App dari menu jenis deployment. Proses deployment mungkin memerlukan beberapa saat. Setelah selesai, URL Web App akan dibuat. Salin URL ini dan tempelkan ke kolom URL pada simpul Webhook di aliran IoT Logic Anda. URL Web App adalah endpoint yang akan menerima permintaan HTTP POST yang dikirim oleh simpul Webhook.

<img src="https://3546701789-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://3546701789-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">

#### Memperbarui Apps Script

Jika Anda perlu memodifikasi Apps Script nanti, Anda tidak perlu membuat deployment baru.

Sebagai gantinya, klik Deploy → Manage Deployments, pilih deployment yang sudah ada, lalu klik Edit (ikon pensil). Setelah menyimpan dan menerapkan ulang versi yang diperbarui, perubahan yang dibuat pada skrip akan langsung berlaku sambil tetap menggunakan URL Web App yang sama.

Ini memungkinkan Anda memperbarui skrip tanpa harus memodifikasi konfigurasi Webhook di IoT Logic.

<img src="https://3546701789-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">

Setelah menyelesaikan semua langkah yang dijelaskan dalam panduan ini, koneksi antara IoT Logic dan Google Sheets seharusnya berhasil dibuat.

Integrasi ini menyediakan cara yang sederhana dan efektif untuk mencatat data telemetri, parameter eksternal, atau atribut kustom IoT Logic untuk pelaporan, analisis, audit, atau integrasi dengan alat Google Workspace lainnya.

<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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
