Module 5 · Automatiser avec n8nEnviron 1 min
Du base64 au fichier
L’API ne renvoie pas un fichier, mais du texte : l’image encodée en base64, un alphabet de 64 caractères qui transporte des données binaires dans du JSON, au prix d’un poids supérieur d’environ un tiers. Elle se trouve dans les steps de la réponse, dans un bloc de type image d’une étape model_output. Un second nœud Code, « Extraire image », va la chercher :
javascript
// Nœud Code « Extraire image », mode Run Once for Each Item
const sorties = ($json.steps ?? [])
.filter((etape) => etape.type === "model_output")
.flatMap((etape) => etape.content ?? []);
const image = sorties.filter((bloc) => bloc.type === "image").pop();
const message = sorties.filter((bloc) => bloc.type === "text").map((bloc) => bloc.text).join(" ");
return {
json: {
id: $("Compiler").item.json.id,
image_b64: image ? image.data : "",
message,
},
};Puis quatre nœuds terminent le trajet :
- If, « Image reçue ? » : la condition
{{ $json.image_b64 }}is not empty. - Branche vraie, Convert to File : opération Move Base64 String to File, champ
image_b64, nom de fichier{{ $json.id }}.jpg, type MIMEimage/jpeg. - Google Drive, opération Upload, vers le dossier « À valider ».
- Google Sheets, opération Update Row : correspondance sur
id, avec{{ $('Extraire image').item.json.id }}, statut « à valider », lienhttps://drive.google.com/file/d/{{ $json.id }}/view.
La branche fausse met la ligne au statut « à revoir », avec le message du modèle, qui explique souvent pourquoi aucune image n’est sortie.