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.itemvíce o built-in metodách a proměnných v dokumentaci. Připomenu, že nodeFunctionmusí 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 notationa odkázat na správná data. Uložení do objektu probíhá standardně podle pravidel Javascriptu. Do původního objektuitempřidáme nové nové propertytoken. Proč je toitem.json.tokena 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!