n8n je open-source automatizační platforma, který může bez problémů konkurovat Make.com – pokud se nebojíte napsat pár řádků Javascriptu (to je hlavní výhoda, pro kterou n8n používám).
Řešil jsem teď situaci, kdy potřebuji:
- přihlásit se k API a získat autorizační token,
- stáhnout všechny objednávky za předchozí období (např. den) a
- ke každé si zavolat znovu API a získat detailní informace o objednávce.
V čem je problém?
Když chci původně získaný token využít v při druhém volání API (detail objednávky), token se do API requestu vyplní pouze u první objednávky. Při dalším loopování už na něj nedosáhnete a API request selže, protože už není autorizovaný.
Řešení
Je to poměrně drobnost, kterou v Make.com snadno vyřešíte. V n8n na to musíte jinak. Buď můžete pro každou objednávku znovu získávát token a to je sice funkční, ale ne moc elegantní. Logické by bylo získat token jednou a pak ho využít pro každý request. Funguje, ale sám se snažím dělat věci “správně” (pokud mají fungovat dlouho).
Druhá možnost je přidat do flow node Function
(nastavení: spuštění kódu pro každý řádek), ve kterém můžete psát Javascript. Tady je ukázka:
// 1 – Vezmeme vstupní data z akuálního řádku
const item = $input.item;
// 2 – Do řádku vložíme token
item.json.token = $('login').item.json.data.token;
// 3 – Vrátíme celý objek řádku obohacený o token
return item;
Vysvětlím to ve větším detailu:
- Nejprve vezmeme vstupní data. Data z předchozího modulu je možné vzít přes built-in metodu
$input.item
více o built-in metodách a proměnných v dokumentaci. Připomenu, že nodeFunction
musí být nastavena na běh kódu pro každý řádek. - Do aktuálního řádku vložíme náš token. Ten získáme přes funkci, který umožńuje získávat data z jiných než vstupních nodes –
$(’název node’)
. Pak už je jen potřeba využítdot notation
a odkázat na správná data. Uložení do objektu probíhá standardně podle pravidel Javascriptu. Do původního objektuitem
přidáme nové nové propertytoken
. Proč je toitem.json.token
a ne jenitem.token
? S tím jsem se dost natrápil a je to dané způsobem, jakým v n8n fungují datové struktury. - Nakonec data vrátíme celý objekt, abychom ho mohli využít v dalším kroky.
Ke každému řádku jsme přidali token a tak ho můžeme pro API call využít.
Snad je to srozumitelné . n8n je boží a vmnoha ohledech předhání i Make.com. Ale pořád je to trochu geekovina. Asi bych se už měl hecnout a udělat nějaké větší představení.
Díky za feedback!