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 list
zajišťuje iterování (tzn. provedení dalších akcí pro každou položku), někdy se vyplatí použítSplit in Batches
a nastavit dávky “po jednom” (pak to funguje stejně jakoIterátor
v 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 kRouteru
v Make.com), a potřebuju později spojit dvě větve zpět do sebe, nepotřebujiMerge
node. 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 vCode
node. - Pokud potřebujete iterovat nad workflow, které je na konci hodně rozvětvené, stačí na konec přidat
If
node 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.