Envoyer automatiquement des données dans un Google Sheet (sans Zapier)

Un webhook Apps Script, l'API Sheets en direct, ou un outil qui écrit nativement. Le code des trois, et pourquoi le connecteur payant est de trop.

Martin Riedweg Cofondateur de Rowbase 29 juillet 2026 · 6 min de lecture

En résumé : trois chemins existent. Un script hébergé par Google, gratuit, 15 minutes, aucune infrastructure. Un appel direct à l'API Sheets, le plus propre si vous avez du code. Ou un outil qui écrit nativement dans votre feuille. Le connecteur tiers facturé à la tâche est le seul dont vous n'avez presque jamais besoin.

Trois façons d'alimenter un Google Sheet automatiquement Comparaison de trois chemins : copier-coller manuel, connecteur tiers facturé à la tâche, et écriture directe via l'API Google Sheets. Chemin 1 Copier-coller à la main Votre outil humain Le Sheet Gratuit, jamais à jour et personne ne sait quand ça a été fait Chemin 2 Un connecteur tiers Votre outil Connecteurfacturé à la tâche Le Sheet Un abonnement de plus et une panne que vous ne contrôlez pas Chemin 3 L'écriture directe via l'API Google Sheets Votre outil OAuth Le Sheet Une seule dépendance un journal de sync, une alerte quand ça casse Dans les trois cas, vos formules, vos graphiques et vos tableaux croisés restent dans le Sheet. C'est le point d'entrée qui change.

Option 1 · Apps Script en webhook (gratuit, sans serveur)

Le plus rapide quand vous voulez juste qu'une source externe pousse des lignes dans un fichier. Trois gestes, depuis votre Sheet :

  1. Ouvrez l'éditeur de script. Extensions, puis Apps Script. Collez le code ci-dessous, en remplaçant le secret et le nom de l'onglet par les vôtres.
  2. Déployez-le en application web. Déployer, Nouveau déploiement, Application Web, avec « Exécuter en tant que : moi » et « Accès : tout le monde ». Google vous rend une URL.
  3. Appelez cette URL en POST depuis votre source de données, avec le secret dans le corps de la requête.
const SECRET = 'remplacez-moi';

function doPost(e) {
  const body = JSON.parse(e.postData.contents);

  if (body.secret !== SECRET) {
    return ContentService
      .createTextOutput(JSON.stringify({ ok: false, error: 'unauthorized' }))
      .setMimeType(ContentService.MimeType.JSON);
  }

  SpreadsheetApp
    .getActiveSpreadsheet()
    .getSheetByName('Commandes')
    .appendRow([new Date(), body.client, body.montant, body.statut]);

  return ContentService
    .createTextOutput(JSON.stringify({ ok: true }))
    .setMimeType(ContentService.MimeType.JSON);
}

Puis, depuis n'importe où :

curl -X POST "https://script.google.com/macros/s/VOTRE_ID/exec" \
  -H 'Content-Type: application/json' \
  -d '{"secret":"remplacez-moi","client":"Atelier Lumen","montant":860.5,"statut":"En cours"}'

Ce qu'il faut savoir avant de s'y engager. Un déploiement « accès : tout le monde » est une URL publique : le secret partagé n'est pas décoratif, c'est votre seule authentification. Apps Script est soumis à des quotas quotidiens et à une durée d'exécution maximale, donc pas d'import de 50 000 lignes par ce chemin. Et si vous poussez plusieurs lignes d'un coup, remplacez la boucle de appendRow par un seul setValues : c'est ce qui fait la différence entre deux secondes et deux minutes.

Option 2 · L'API Google Sheets en direct (si vous avez du code)

Si les données partent déjà de votre application, passez par l'API. Un POST sur l'endpoint append ajoute une ligne à la suite des données existantes :

POST https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/Commandes!A1:append
  ?valueInputOption=USER_ENTERED&insertDataOption=INSERT_ROWS
{ "values": [["2026-03-14", "Atelier Lumen", 860.5, "En cours"]] }

Il vous faut un jeton OAuth avec le scope https://www.googleapis.com/auth/spreadsheets.

Le vrai choix ici n'est pas technique, il est pratique : OAuth ou compte de service ? Un compte de service est plus simple à faire tourner côté serveur, mais il oblige l'utilisateur à partager manuellement son fichier avec une adresse e-mail cryptique, et neuf personnes sur dix ne le feront pas correctement. Avec OAuth, l'utilisateur choisit son fichier dans une fenêtre Google et ça marche du premier coup. Si un humain non technique doit brancher la connexion lui-même, prenez OAuth.

valueInputOption mérite trente secondes d'attention. USER_ENTERED interprète la valeur comme si elle était tapée : 2026-03-14 devient une vraie date, 860,5 devient un nombre. RAW écrit du texte brut, et vos dates ne se trieront jamais. C'est la source numéro un de « pourquoi mes dates sont-elles du texte ».

Option 3 · Un outil qui écrit dans votre Sheet nativement

Si personne dans l'équipe n'écrira ce code, et c'est le cas le plus fréquent, la question devient : où la donnée est-elle saisie ? Un outil de saisie qui pousse lui-même dans votre feuille supprime la question de l'automatisation, parce qu'il n'y a plus d'intégration à maintenir.

C'est aussi le moment de vérifier ce que vous cherchez vraiment. Si le Sheet est votre registre partagé, l'alimenter automatiquement ne règle qu'une partie du problème : il reste les six limites d'un Sheet utilisé comme base, et quatre questions pour savoir si elles vous concernent.

C'est ce que fait Rowbase : vous connectez votre compte Google, vous choisissez le fichier et l'onglet de destination, et chaque ligne ajoutée arrive dans votre Sheet en quelques secondes, avec un journal de synchronisation et une alerte quand un envoi échoue.

Et pourquoi pas Zapier ou Make ?

Ce sont de bons outils, et ils sont parfaitement justifiés quand vous reliez deux SaaS que vous ne contrôlez ni l'un ni l'autre. Trois réserves quand il s'agit uniquement d'écrire dans un Sheet :

  • La facturation à la tâche transforme un volume qui grandit en une facture qui grandit, pour une opération qui coûte objectivement zéro.
  • Vous ajoutez une dépendance dont vous ne voyez pas les pannes : quand la ligne n'arrive pas, il faut aller chercher pourquoi dans un journal qui n'est pas le vôtre.
  • Le typage vous échappe. Un connecteur générique écrit ce qu'il reçoit, souvent en RAW, et vous retrouvez des dates en texte sans savoir d'où ça vient.

Pour un flux qui part de votre propre outil vers votre propre Sheet, l'intermédiaire n'apporte rien.

Une chose à mettre en place quel que soit le chemin choisi

Une écriture automatique qui échoue en silence est pire qu'un copier-coller manuel : vous prenez vos décisions sur un fichier que vous croyez à jour. Prévoyez, dès le premier jour, un horodatage de la dernière écriture réussie affiché dans le Sheet lui-même. Une cellule en haut de la feuille suffit. C'est la seule protection qui fonctionne, parce que c'est la seule que vous voyez sans la chercher.

Rowbase est une base de données collaborative qui alimente vos Google Sheets nativement : grille typée, autant d'utilisateurs que vous voulez, lecteurs gratuits, données hébergées dans l'Union européenne. Vos formules et vos graphiques ne changent pas.

Essayer gratuitement →

Questions fréquentes

Peut-on écrire dans un Google Sheet sans passer par Google Apps Script ? Oui, avec l'API Google Sheets et un jeton OAuth ayant le scope spreadsheets. Apps Script est simplement le chemin sans infrastructure.

Un webhook Apps Script est-il sécurisé ? Pas par défaut. Un déploiement accessible à tout le monde répond à n'importe qui : vérifiez un secret partagé dans le corps de la requête, et changez-le si l'URL a circulé.

Combien de lignes peut-on envoyer par jour ? Cela dépend des quotas Apps Script et des limites de débit de l'API Sheets, que Google fait évoluer : vérifiez-les avant de dimensionner un import. Pour des volumes importants, regroupez les lignes en une seule requête au lieu d'en envoyer une par ligne.

Mes dates arrivent en texte, pourquoi ? Vous écrivez probablement en RAW. Passez valueInputOption=USER_ENTERED pour que Google interprète la valeur comme si un humain l'avait tapée.

La synchronisation peut-elle fonctionner dans les deux sens ? Écrire dans un Sheet est simple ; le relire de façon fiable demande de détecter les changements côté Google, ce que l'API ne pousse pas vers vous. Prévoyez un mécanisme de relecture périodique, et une règle claire sur qui gagne en cas de divergence.

Testez sur votre vraie liste.

14 jours, sans carte bancaire. Import CSV depuis Airtable en deux minutes.

Essayer gratuitement
Partager
LinkedIn

À lire ensuite