Le nœud Google Sheets `appendOrUpdate` écrit en dehors des limites de la table native

Salut les gars,

J’ai un problème avec le nœud Google Sheets (n8n-nodes-base.googleSheets, typeVersion 4.5), où les lignes ajoutées via les opérations appendOrUpdate sont écrites en dehors des limites d’un tableau natif Google Sheets, au lieu d’être insérées dans la prochaine ligne disponible du tableau.

La feuille cible utilise la fonction Tableaux natifs de Google Sheets (Insérer → Tableau). Le tableau s’étend environ de A1:N7, avec la ligne 1 comme en-tête et les lignes 2–7 contenant des espaces réservés de colonnes typées (date, devise, puce personne). Le tableau s’appelle « Invoices ».

Comportement attendu vs réel

Quand une nouvelle ligne est envoyée au nœud, elle devrait être insérée dans les limites du tableau, soit en remplissant la prochaine ligne vide du tableau, soit en étendant le tableau pour accommoder le nouvel enregistrement, de sorte que la ligne hérite les types de colonnes, la mise en forme et les références structurées du tableau. À la place, la ligne est écrite à la première ligne vide immédiatement sous la plage de données actuelle du tableau, en dehors des limites du tableau ; elle ne fait pas partie du tableau et n’hérite pas de ses types de colonnes ou de sa mise en forme. Cela se produit indépendamment du fait que le tableau contienne des lignes vides réservées ou uniquement des lignes remplies.

J’ai joint une capture d’écran de la feuille de destination montrant le problème, et je serais heureux de partager une exportation anonymisée du flux de travail si cela pourrait aider. Merci de votre attention.

1 « J'aime »

Oui, on dirait que n8n traite la feuille comme une plage normale, pas comme la nouvelle fonctionnalité native Tables de Google.

Je testerais avec une ligne vide déjà présente dans le tableau et j’essaierais aussi de définir la plage sur la zone du tableau.

Si l’ajout se fait toujours en bas du tableau, je considérerais cela comme une limitation/un bug du nœud Sheets et j’utiliserais soit une solution de plage normale, soit j’accéderais directement à l’API Sheets.

1 « J'aime »

Bienvenue @ernest28 dans notre communauté ! Je m’appelle Jay et je suis un créateur vérifié n8n.

C’est une limitation connue - le nœud Google Sheets de n8n appelle l’API Sheets v4 au niveau spreadsheets.values, qui n’a aucune connaissance des Tables natives de Google Sheets. La fonctionnalité Tables s’appuie sur des plages de feuilles ordinaires, mais l’API ne l’expose pas de la même manière. Ainsi, ajouter une ligne trouve simplement la prochaine ligne vide de la plage sans « insérer » une ligne dans l’objet Table. La seule véritable solution de contournement pour le moment est d’éviter d’utiliser les Tables natives comme cible - utilisez plutôt une plage ordinaire et appliquez la mise en forme manuellement, ou utilisez le nœud API Sheets avec un appel batchUpdate direct si vous avez besoin que la ligne s’enregistre dans la structure de la Table.

1 « J'aime »

@ernest28 confirmant ce qu’ont dit @OMGItsDerek + @nguyenthieutoan — le endpoint values.append de l’API Sheets que n8n appelle n’a aucune notion native de Tables, donc la ligne se retrouve en dehors de la limite par conception. la solution de contournement quand tu veux toujours des insertions conscientes des Tables est d’appeler spreadsheets.batchUpdate directement via HTTP Request avec une requête insertRange qui étend explicitement la Table.

voici le JSON du nœud HTTP Request pour la solution de contournement :

insertRange décale les cellules existantes vers le bas + étend l’objet Table, puis updateCells écrit ta ligne dans la ligne fraîchement créée À L’INTÉRIEUR de la limite. les types de colonnes + la mise en forme sont hérités de la définition de la Table. ajuste startRowIndex/endRowIndex au point où la Table se termine actuellement (ou interroge-la d’abord avec spreadsheets.get + includeGridData=false pour trouver la limite actuelle).

1 « J'aime »