API REST de Google Sheets

Avancé

Ceci est unEngineering, Multimodal AIworkflow d'automatisation du domainecontenant 17 nœuds.Utilise principalement des nœuds comme Set, Webhook, GoogleSheets, RespondToWebhook. Utiliser la base de données Google Sheets pour créer une API REST CRUD

Prérequis
  • Point de terminaison HTTP Webhook (généré automatiquement par n8n)
  • Informations d'identification Google Sheets API
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "id": "6QvxWwgaPghd06wj",
  "meta": {
    "instanceId": "8981479cb588889c05b145eaed421551d37a4fff11ab279d3f4744a6577c6002",
    "templateCredsSetupCompleted": true
  },
  "name": "REST API with Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "4b53d6ea-e083-4d89-b8af-6c4e37e4066e",
      "name": "Ajouter une ligne dans la feuille",
      "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": "API : Créer",
      "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": "API : Lire tout",
      "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": "Répondre à API : Créer",
      "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": "Répondre à API : Lire tout",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        448,
        224
      ],
      "parameters": {
        "options": {},
        "respondWith": "allIncomingItems"
      },
      "typeVersion": 1.4
    },
    {
      "id": "1560785d-b30e-49b5-94f4-27445538d086",
      "name": "API : Lire",
      "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": "Obtenir les lignes dans la feuille",
      "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": "Obtenir une ligne dans la feuille",
      "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": "Répondre à API : Lire",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        448,
        448
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.4
    },
    {
      "id": "6cbd2531-b9f4-4a3f-b821-bec3caf2d09d",
      "name": "API : Mettre à jour",
      "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": "Mettre à jour une ligne dans la feuille",
      "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": "Répondre à API : Mettre à jour",
      "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": "API : Supprimer",
      "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": "Supprimer des lignes ou colonnes de la feuille",
      "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": "Répondre à API : Supprimer",
      "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": "Note adhésive",
      "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": "Préparer les champs pour mise à jour",
      "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": {
    "1560785d-b30e-49b5-94f4-27445538d086": {
      "main": [
        [
          {
            "node": "1cbcf7af-d1ba-4994-a795-d5c597439bad",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "70a88ee3-83ef-409f-b9fc-699b57aff26a": {
      "main": [
        [
          {
            "node": "4b53d6ea-e083-4d89-b8af-6c4e37e4066e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ec3b5abd-17ae-4964-b792-5d320ad7a65b": {
      "main": [
        [
          {
            "node": "b3950509-6173-4a30-bbaa-42ef34b15878",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6cbd2531-b9f4-4a3f-b821-bec3caf2d09d": {
      "main": [
        [
          {
            "node": "8264647e-c5b2-4bf1-90a7-6fc0e8e5c2b9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1cbcf7af-d1ba-4994-a795-d5c597439bad": {
      "main": [
        [
          {
            "node": "ebaf7824-73af-47c2-8e3d-a19947a91892",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "46baff34-99e4-4c6a-9395-76fc5358c5a7": {
      "main": [
        [
          {
            "node": "6ee8437b-6340-4cdc-b39b-1951461d4164",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4cb95925-d5be-4594-93d1-84cecaabc99d": {
      "main": [
        [
          {
            "node": "46baff34-99e4-4c6a-9395-76fc5358c5a7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4b53d6ea-e083-4d89-b8af-6c4e37e4066e": {
      "main": [
        [
          {
            "node": "a18c5a15-92bf-4897-83c7-0c0a4aaeb58a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b91994a3-ef36-4770-99dc-926640496693": {
      "main": [
        [
          {
            "node": "5180a531-5efa-4fba-a870-61f7223fcb93",
            "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": "0361a349-a259-4a3c-877e-2bb7bee0f9be",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Ingénierie, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds17
Catégorie2
Types de nœuds5
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34