Usar la API REST de Google Sheets
Este es unEngineering, Multimodal AIflujo de automatización del dominio deautomatización que contiene 17 nodos.Utiliza principalmente nodos como Set, Webhook, GoogleSheets, RespondToWebhook. Crear una API REST CRUD usando una base de datos de Google Sheets
- •Punto final de HTTP Webhook (n8n generará automáticamente)
- •Credenciales de API de Google Sheets
Nodos utilizados (17)
Categoría
{
"id": "6QvxWwgaPghd06wj",
"meta": {
"instanceId": "8981479cb588889c05b145eaed421551d37a4fff11ab279d3f4744a6577c6002",
"templateCredsSetupCompleted": true
},
"name": "REST API with Google Sheets",
"tags": [],
"nodes": [
{
"id": "4b53d6ea-e083-4d89-b8af-6c4e37e4066e",
"name": "Agregar fila en hoja",
"type": "n8n-nodes-base.googleSheets",
"position": [
224,
0
],
"parameters": {
"columns": {
"value": {
"name": "={{ $json.body.name }}",
"email": "={{ $json.body.email }}",
"status": "={{ $json.body.status }}"
},
"schema": [
{
"id": "name",
"type": "string",
"display": true,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit?usp=drivesdk",
"cachedResultName": "REST API data"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "FboA3kaXSneJmEGX",
"name": "Google Service Account account"
}
},
"typeVersion": 4.7
},
{
"id": "70a88ee3-83ef-409f-b9fc-699b57aff26a",
"name": "Disparador Webhook: Crear",
"type": "n8n-nodes-base.webhook",
"position": [
0,
0
],
"webhookId": "e9177cf8-aab6-4cc0-8086-073c294dd575",
"parameters": {
"path": "items",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "4cb95925-d5be-4594-93d1-84cecaabc99d",
"name": "Disparador Webhook: Leer Todo",
"type": "n8n-nodes-base.webhook",
"position": [
0,
224
],
"webhookId": "e9177cf8-aab6-4cc0-8086-073c294dd575",
"parameters": {
"path": "items/all",
"options": {},
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "a18c5a15-92bf-4897-83c7-0c0a4aaeb58a",
"name": "Responder a Disparador Webhook: Crear",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
448,
0
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "{\n \"status\": \"success\",\n \"message\": \"Record created.\"\n}"
},
"typeVersion": 1.4
},
{
"id": "6ee8437b-6340-4cdc-b39b-1951461d4164",
"name": "Responder a Disparador Webhook: Leer Todo",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
448,
224
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.4
},
{
"id": "1560785d-b30e-49b5-94f4-27445538d086",
"name": "Disparador Webhook: Leer",
"type": "n8n-nodes-base.webhook",
"position": [
0,
448
],
"webhookId": "e9177cf8-aab6-4cc0-8086-073c294dd575",
"parameters": {
"path": "items",
"options": {},
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "46baff34-99e4-4c6a-9395-76fc5358c5a7",
"name": "Obtener filas en hoja",
"type": "n8n-nodes-base.googleSheets",
"position": [
224,
224
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit?usp=drivesdk",
"cachedResultName": "REST API data"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "FboA3kaXSneJmEGX",
"name": "Google Service Account account"
}
},
"typeVersion": 4.7
},
{
"id": "1cbcf7af-d1ba-4994-a795-d5c597439bad",
"name": "Obtener fila en hoja",
"type": "n8n-nodes-base.googleSheets",
"position": [
224,
448
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "={{ $json.query.id }}",
"lookupColumn": "=row_number"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit?usp=drivesdk",
"cachedResultName": "REST API data"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "FboA3kaXSneJmEGX",
"name": "Google Service Account account"
}
},
"typeVersion": 4.7
},
{
"id": "ebaf7824-73af-47c2-8e3d-a19947a91892",
"name": "Responder a Disparador Webhook: Leer",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
448,
448
],
"parameters": {
"options": {}
},
"typeVersion": 1.4
},
{
"id": "6cbd2531-b9f4-4a3f-b821-bec3caf2d09d",
"name": "Disparador Webhook: Actualizar",
"type": "n8n-nodes-base.webhook",
"position": [
0,
672
],
"webhookId": "e9177cf8-aab6-4cc0-8086-073c294dd575",
"parameters": {
"path": "items",
"options": {},
"httpMethod": "PUT",
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "b91994a3-ef36-4770-99dc-926640496693",
"name": "Actualizar fila en hoja",
"type": "n8n-nodes-base.googleSheets",
"position": [
448,
672
],
"parameters": {
"columns": {
"value": {
"name": "={{ $json.body.name }}",
"email": "={{ $json.body.email }}",
"status": "={{ $json.body.status }}",
"row_number": "={{ $json.query.id }}"
},
"schema": [
{
"id": "name",
"type": "string",
"display": true,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit?usp=drivesdk",
"cachedResultName": "REST API data"
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "FboA3kaXSneJmEGX",
"name": "Google Service Account account"
}
},
"typeVersion": 4.7
},
{
"id": "5180a531-5efa-4fba-a870-61f7223fcb93",
"name": "Responder a Disparador Webhook: Actualizar",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
672,
672
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "{\n \"status\": \"success\",\n \"message\": \"Record updated.\"\n}"
},
"typeVersion": 1.4
},
{
"id": "ec3b5abd-17ae-4964-b792-5d320ad7a65b",
"name": "Disparador Webhook: Eliminar",
"type": "n8n-nodes-base.webhook",
"position": [
0,
896
],
"webhookId": "e9177cf8-aab6-4cc0-8086-073c294dd575",
"parameters": {
"path": "items",
"options": {},
"httpMethod": "DELETE",
"responseMode": "responseNode"
},
"typeVersion": 2.1
},
{
"id": "b3950509-6173-4a30-bbaa-42ef34b15878",
"name": "Eliminar filas o columnas de hoja",
"type": "n8n-nodes-base.googleSheets",
"position": [
224,
896
],
"parameters": {
"operation": "delete",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit?usp=drivesdk",
"cachedResultName": "REST API data"
},
"startIndex": "={{ $json.query.id }}",
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "FboA3kaXSneJmEGX",
"name": "Google Service Account account"
}
},
"typeVersion": 4.7
},
{
"id": "0361a349-a259-4a3c-877e-2bb7bee0f9be",
"name": "Responder a Disparador Webhook: Eliminar",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
448,
896
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "{\n \"status\": \"success\",\n \"message\": \"Record deleted.\"\n}"
},
"typeVersion": 1.4
},
{
"id": "ba367266-005d-42a0-aeba-2b48db0fea05",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-688,
0
],
"parameters": {
"width": 592,
"height": 992,
"content": "## Simple REST API with Google Sheets\n\n### Introduction\n\nThis workflow template demonstrates how to quickly and easily create a simple REST API using n8n and a Google Sheet as a no-code database. It's a perfect starting point for building a backend for small applications, prototypes, or internal tools without writing any code.\n\n### Purpose\n\nThe purpose of this template is to provide a complete, ready-to-use n8n workflow that handles all fundamental CRUD (Create, Read, Update, Delete) operations. The workflow uses a single Webhook trigger to handle POST, GET, PUT, and DELETE requests, allowing you to manage data in your Google Sheet through standard API calls.\n\n### Setup Instructions\n\nTo get started with this template, follow these steps:\n\n1. **Prepare your Google Sheet:** Create a new Google Sheet and add the following column headers in the first row: `name`, `email`, and `status`. You can use this [example Google Sheet](https://docs.google.com/spreadsheets/d/1bQyl8pGVutkq1LRwK_-6TAAcXwNj4_TipeWHi-qmK1Q/edit?usp=sharing) as a starting point. This sheet will serve as your database.\n2. **Authenticate:** In the n8n workflow, connect your Google Account credentials to the Google Sheets nodes.\n3. **Select your data:** Choose the Google Sheet and the corresponding sheet name from the drop-down lists in each of the Google Sheets nodes.\n4. **Activate:** Save and activate the workflow.\n5. Test the API: Use a tool like `curl`, Postman, or Insomnia to test your new API endpoints. The base URL will be your n8n webhook URL followed by `/items`.\n\n#### Example `curl` Commands:\n* **POST (Create):** `curl -X POST YOUR_N8N_WEBHOOK_URL/items -H \"Content-Type: application/json\" -d '{\"name\": \"Alice\", \"email\": \"alice@example.com\", \"status\": \"active\"}'`\n* **GET (Read All):** `curl -X GET YOUR_N8N_WEBHOOK_URL/items/all`\n* **GET (Read Single):** `curl -X GET YOUR_N8N_WEBHOOK_URL/items?id=2`\n* **PUT (Update):** `curl -X PUT YOUR_N8N_WEBHOOK_URL/items?id=2 -H \"Content-Type: application/json\" -d '{\"status\": \"inactive\"}'`\n* **DELETE (Delete):** `curl -X DELETE YOUR_N8N_WEBHOOK_URL/items?id=2`\n\nFor more detailed instructions, including building the workflow in n8n, check out the full blog post: [Build a Simple REST API in 10 Minutes with n8n & Google Sheets](https://n8nplaybook.com/post/2025/08/n8n-google-sheets-rest-api/)"
},
"typeVersion": 1
},
{
"id": "8264647e-c5b2-4bf1-90a7-6fc0e8e5c2b9",
"name": "Preparar Campos para Actualizar",
"type": "n8n-nodes-base.set",
"position": [
224,
672
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={\n \"row_number\": {{ $json.query.id }}\n {{ $if($json.body.keys().length > 0, ', ' + $json.body.toJsonString().replace('{', '').replace('}', ''), '') }}\n}\n"
},
"typeVersion": 3.4
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "a0da6d17-701f-4d0f-a49d-b66b5fecd7b2",
"connections": {
"Webhook: Leer": {
"main": [
[
{
"node": "1cbcf7af-d1ba-4994-a795-d5c597439bad",
"type": "main",
"index": 0
}
]
]
},
"Webhook: Crear": {
"main": [
[
{
"node": "4b53d6ea-e083-4d89-b8af-6c4e37e4066e",
"type": "main",
"index": 0
}
]
]
},
"Webhook: Eliminar": {
"main": [
[
{
"node": "b3950509-6173-4a30-bbaa-42ef34b15878",
"type": "main",
"index": 0
}
]
]
},
"Webhook: Actualizar": {
"main": [
[
{
"node": "8264647e-c5b2-4bf1-90a7-6fc0e8e5c2b9",
"type": "main",
"index": 0
}
]
]
},
"1cbcf7af-d1ba-4994-a795-d5c597439bad": {
"main": [
[
{
"node": "Responder a Webhook: Leer",
"type": "main",
"index": 0
}
]
]
},
"46baff34-99e4-4c6a-9395-76fc5358c5a7": {
"main": [
[
{
"node": "Responder a Webhook: Leer Todo",
"type": "main",
"index": 0
}
]
]
},
"Webhook: Leer Todo": {
"main": [
[
{
"node": "46baff34-99e4-4c6a-9395-76fc5358c5a7",
"type": "main",
"index": 0
}
]
]
},
"4b53d6ea-e083-4d89-b8af-6c4e37e4066e": {
"main": [
[
{
"node": "Responder a Webhook: Crear",
"type": "main",
"index": 0
}
]
]
},
"b91994a3-ef36-4770-99dc-926640496693": {
"main": [
[
{
"node": "Responder a Webhook: Actualizar",
"type": "main",
"index": 0
}
]
]
},
"8264647e-c5b2-4bf1-90a7-6fc0e8e5c2b9": {
"main": [
[
{
"node": "b91994a3-ef36-4770-99dc-926640496693",
"type": "main",
"index": 0
}
]
]
},
"b3950509-6173-4a30-bbaa-42ef34b15878": {
"main": [
[
{
"node": "Responder a Webhook: Eliminar",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Ingeniería, IA Multimodal
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Viktor Klepikovskyi
@vklepikovskyiCompartir este flujo de trabajo