Ahoj všem!
Předělávám automatizaci z Make.com do n8n – důvod je jednoduchý. Je to poměrně náročné na operace a v n8n bude provoz levnější. Říkal jsem si, že si tu odložím pár poznámek z toho, co jsem se dneska naučil – pro svoje budoucí já a třeba i pro ostatní.
Varování
– pokud s n8n nemáte zkušenosti, ta poslední část bude dost “heavy”. Popíšu ale i koncept a využití, ať si z toho každý něco odnese.
Jak to celé funguje?
Podstata je jednoduchá – potřebujeme každý den z Darujme.cz stáhnout aktuální transakce a uložit je do Airtablu. Oproti původnímu scénáři je teď potřeba transakce aktualizovat (třeba proto, že o víkendu transakce neprobíhají). Zdálo se to poměrně jednoduché, ale nebylo.
- V první řadě musíme zjistit, zda už je dárce v naší databázi, a pokud ano, tak s ním tuto novou transakci spojit. Pokud ne, je potřeba ho vytvořit.
- Pak je potřeba podle typu platby (pravidelná, opakující se) zařadit dárce do správného mailing listu. U existujících dárců je to složitější, protože nemůžu původní mailing listy přepsat – musím je spojit. Tady proběhne ještě optimalizace – je potřeba zajistit, aby dárce nebyl zároveň v mailing listu pro jednorázové i pravidelné dary.
- Pak je potřeba najít, zda transakce v Airtablu existuje, a pokud ano, tak ji upravit. V opačném případě je potřeba ji vytvořit.
K čemu to slouží?
Organizace, pro kterou tohle realizuji, má skvělý přehled o svých dárcích: ty jednorázové navolává nebo jim posílá relevantní e-mailing s cílem získat si jejich přízeň pravidelně. S těmi pravidelnýmise také může bavit na jiné úrovni. Důvodů je celkově víc (hlavně vytvoření jednotné databáze kontaktů napříč projekty), ale tohle je podstata.
Co jsem si odnesl?
S n8n už pracuju přibližně rok a půl a přesto mám pocit, že občas narážím u věcí, které v Make.com dělám levou zadní. n8n má určitě strmější učící křivku, ale dnešek mě přesvědčil, že je to hodně o mindsetu. Nakonec to není tak odlišné a spousta věcí v Make.com ani nejde.
Tady je slibovaný seznam:
- I když node
Item listzajišťuje iterování (tzn. provedení dalších akcí pro každou položku), někdy se vyplatí použítSplit in Batchesa nastavit dávky “po jednom” (pak to funguje stejně jakoIterátorv Make.com). Hromadné operace se v Make.com téměř nedělají a v n8n jdou, ale někdy je to zbytečně komplexní. - Pokud používám node
If, který řeší logickou podmínku (alternativa kRouteruv Make.com), a potřebuju později spojit dvě větve zpět do sebe, nepotřebujiMergenode. Dřív jsem to dělal. Přitom stačí do sebe větve spojit a funguje to naprosto automaticky. - I když mě uživatelské rozhraní editoru tlačít k mapování proměných pouze z předchozí node, je možné bez obav mapovat i dříve předcházející nodes. Jen je potřeba dávat pozor, abyste nepřerušili původní flow (např. dohledáváte neexistující data v Airtablu, node nevrátí nic a workflow může skončit). Všechno se ale dá řešit.
- Práce spolemi (
arrays) má v expression editoru stále rezervy – někdy je opravdu lepší napsat kousek Javascriptu vCodenode. - Pokud potřebujete iterovat nad workflow, které je na konci hodně rozvětvené, stačí na konec přidat
Ifnode a do něj informaci z kontextu iterátoruSplit in batches:{{$node["SplitInBatches"].context["noItemsLeft"]}}. Pokud jenoItemsLeft = true, můžete workflow ukončit.
No – n8n určitě není pro každého, ale pokud vezmu v potaz, že jde o open source, který si můžete nainstalovat na vlastní server, může to být fajn řešení, třeba když pracujete s citlivými daty.
Kdyby vás cokoliv zajímalo, ptejte se!
H.
