Comment obtenir les noms de colonnes et les valeurs de Google Sheets dans le nœud de code Python n8n ?

Je dois parcourir toutes les colonnes récupérées à partir de Google Sheets et découvrir leurs noms et valeurs via un bloc de code comme celui-ci :

data = _input.all()

for item in data:
    row = item["json"]

    for column_name, value in row.items():
        print(f"Colonne: {column_name}")
        print(f"Valeur: {value}")

Mais j’ai reçu une erreur disant que _input n’existe pas. Alors, comment puis-je parcourir tous les noms de colonnes et leurs valeurs ?

Salut @Quent, bienvenue !

  1. _input est la syntaxe Python. Si vous recevez le message “_input n’existe pas”, vous êtes probablement en mode JavaScript. Vérifiez la liste déroulante Language en haut du nœud Code. En JavaScript, l’équivalent est $input.all().

  2. print() n’affichera pas la sortie. Le nœud Code vous oblige à retourner des éléments. La sortie de print() ne va nulle part.

Voici une version fonctionnelle en JavaScript (Run Once for All Items) :

const results = [];
for (const item of $input.all()) {
  for (const [columnName, value] of Object.entries(item.json)) {
    results.push({ json: { columnName, value } });
  }
}
return results;

Ou si vous passez au mode Python (nécessite Task Runners, activés par défaut dans la version 2.0+) :

results = []
for item in _input.all():
    for column_name, value in item.json.items():
        results.append({"json": {"column_name": column_name, "value": value}})
return results

Faites-moi savoir si ça marche :crossed_fingers:

Bienvenue @Quent dans notre communauté ! Je suis Jay et je suis un créateur vérifié n8n.

Dans le nœud Python Code de n8n, la variable est items (pas _input). Chaque élément dans items est un dictionnaire avec une clé json. Voici la version corrigée :

for item in items:
    row = item["json"]
    for column_name, value in row.items():
        print(f"Column: {column_name}")
        print(f"Value: {value}")

return items

Note : vous devez également return items à la fin du nœud Code sinon il ne retournera rien en aval.

Ça ne fonctionne pas. Même erreur, seulement avec les items
Voici mes paramètres node :

Ça ne fonctionne pas non plus. Même erreur

@Quent

Ok, le truc, c’est que pour Run Once For Each Item tu dois utiliser _item au singulier, et pour le mode For ALL Items tu dois utiliser _items.

Donc puisque tu es en mode Run Once For Each Item, essaie ça :

row = _item["json"]
for column_name, value in row.items():
print(f"Column: {column_name}")
print(f"Value: {value}")

return _item

Ça marche ! Merci, @houda_ben