Möchtest Du den gesamten Artikel lesen? Und vielleicht sogar den Artikel im PDF-Format und die Beispieldateien herunterladen? Dann hole Dir den Artikel gleich hier - völlig kostenlos!
Zapier ist ein Tool, mit dem wir SaaS-Anwendungen für verschiedene Bereiche automatisieren können. Das geschieht nach dem Prinzip, dass eine solche Anwendung eine Automation triggert und dadurch Aktionen mit der gleichen oder auch mit anderen Anwendungen angestoßen werden. Wie zum Beispiel das Eintragen einer Aufgabe in eine Aufgabenliste, wenn eine neue E-Mail eingegangen ist. Wie haben in weiteren Artikel bereits gezeigt, wie wir solche Automationen mit Tools wie Zapier realisieren können. Aber welchen Bezug gibt es zum eigentlichen Thema dieses Magazins, nämlich dem Programmieren mit Sprachen wie VBA, VB6, twinBASIC et cetera – abgesehen davon, dass wir diese Automationen als Selbstständeriger, Freiberufler, aber auch als Angestellter für unser Unternehmen gewinnbringend einsetzen können? Genau: Wie können diese Automationen natürlich auch per Code triggern. Wie das im Falle von Zapier funktioniert, erklären wir im vorliegenden Artikel.
Wenn Du Dich bereits mit Zapier zur Automation von SaaS-Anwendungen beschäftigt hast, kannst Du direkt in diesen Artikel einsteigen. Falls nicht, empfehlen wir zuvor die Lektüre der folgenden Artikel:
- Automation mit Zapier, Make und Co. (www.vbentwickler.de/448)
- Automation mit Zapier in der Praxis (www.vbentwickler.de/4)
Hier findest Du einige Grundlagen allgemein zum Thema Automatisierung und ein erstes Beispiel für eine Automation auf Basis von Microsoft Outlook und Microsoft To Do.
Automation per VBA nutzen
Wie Du in den obigen Artikeln erfährst, gibt es verschiedene Möglichkeiten, wie Du Automationen mit den verschiedenen Tools von VBA aus starten kannst. Für das Tool Zapier sind die Möglichkeiten ein klein wenig eingeschränkter, denn wir können damit keine Ergebnisse über die Erfolgsmeldung hinaus als Rückgabewert erhalten. Bei dem anderen Tool Make.com sieht dies anders aus – hier können wir explizit festlegen, welche Informationen nach dem Durchlaufen einer Automation an den aufrufenden VBA-Code zurückgeliefert werden sollen. Dies schauen wir uns in weiteren Artikeln an.
Dafür liefert Zapier wieder mehr Möglichkeiten bei der Zusammenarbeit mit dem SQL Server und anderen Datenbanksystemen, denn hier können wir mit dem sogenannten Polling auch auf Änderungen im Datenbestand reagieren.
VBA und Software wie Access, Excel, Outlook und Co. als Trigger für Zapier
Wie in den oben angegebenen Artikeln beschrieben, haben Automationen einen Trigger und anschließend auszuführende Aktionen. Außerdem hat jedes namhafte SaaS-Tool Schnittstellen, die man von Zapier aus nutzen kann.
Wenn wir einen neuen Zap anlegen, finden wir hier die beiden mindestens notwendigen Elemente Trigger und Action (siehe Bild 1).
Bild 1: Diesen Trigger wollen wir per VBA ansteuern.
Klicken wir hier auf Trigger, erscheint der Dialog zur Auswahl der verfügbaren Trigger (siehe Bild 2). Hier können wir in der Suchleiste Visual Basic, Microsoft Access oder andere Office-Anwendungen eingeben – wir finden keinen passenden Trigger, der uns weiterhilft. Es gibt zwar welche für Outlook, Excel oder Word, aber dies betrifft die Online-Anwendungen, nicht die gleichnamigen Desktop-Programme.
Bild 2: Einen Trigger für VBA oder eine der Office-Anwendungen finden wir nicht. Dafür aber einen für Webhooks.
Die Lösung: Webhooks
Wir sehen hier jedoch einen Eintrag namens Webhooks. Das ist unser Weg zum Triggern von Zapier-Automationen per Visual Basic.
Webhooks sind nichts anderes als URLs, die von Zapier zur Verfügung gestellt werden und die wir von beliebigen anderen Anwendungen aus aufrufen können.
Diese können wir mit Visual Basic genauso aufrufen, wie wir es bereits mit verschiedenen Rest-APIs gemacht haben. Dazu sind grundsätzlich erst einmal nur wenige Zeilen Code notwendig.
Bevor wir uns dem Code zuwenden, führen wir aber erst einmal die notwendigen Arbeiten mit Zapier durch. Nach einem Klick auf den Eintrag Webhooks finden wir drei verschiedene Trigger vor (siehe Bild 3). Diese können wir wie folgt verwenden:
Bild 3: Verschiedene Webhooks
- Catch Hook: Hier erhalten wir eine URL von Zapier, die wir von außen aufrufen und so einen Trigger auslösen können. Mitgelieferte Daten beispielsweise im JSON-Format werden automatisch geparst und die enthaltenen Daten können in weiteren Schritten direkt verwendet werden.
- Catch Raw Hook: Hier erhalten wir ebenfalls eine Zapier-URL. Der Unterschied ist, dass mitgelieferte Daten nicht direkt von Zapier verarbeitet werden. Damit können wir beispielsweise vollständige Dateien an Zapier schicken.
- Retrieve Poll: Hier geben wir einen externen Webhook an, also eine URL einer weiteren Anwendung, die regelmäßig abgerufen werden soll.
Webhook mit Catch Hook verwenden
Wir schauen uns zunächst die Variante mit Catch Hook an. Damit können wir zum nächsten Schritt namens Configure weitergehen. Hier sehen wir die Option Pick off a Child Key.
Damit können wir festlegen, dass nur bestimmte Elemente eines eventuell übergebenen JSON-Dokuments weiterverarbeitet werden sollen. Aktuell wollen wir dies nicht nutzen und klicken direkt auf Continue.
Damit gelangen wir zum Bereich Test, wo wir die URL vorfinden, die wir zum Auslösen des Triggers nutzen können (siehe Bild 4).
Bild 4: Die fertige Webhook-URL
Klicken wir nun auf Test trigger, erhalten wir als Antwort No request found. Das ist logisch, denn diese URL wurde speziell für uns definiert und wir haben sie noch nicht aufgerufen. Das können wir nun erst einmal über den Webbrowser erledigen. Dazu kopieren wir die URL in die Zwischenablage und fügen sie in die URL-Leiste des Browsers ein.
Die Antwort sehen wir in Bild 5. Wichtig ist das unterste Name-Wert-Paar namens status, das den Wert success liefert.
Bild 5: Aufruf mit der Antwort von Zapier
Wechseln wir nun zurück nach Zapier, können wir erneut testen und erhalten auch hier einen Eintrag namens request A.
Daten an Zapier übergeben
Auch wenn wir einfach nur eine Automation starten können, indem wir die URL des Webhooks aufrufen, wollen wir vermutlich in den meisten Fällen Daten übergeben, die in den folgenden Aktionen weiterverarbeitet werden sollen.
Dazu haben wir zwei Möglichkeiten:
- wir hängen die Informationen als URL-Parameter an die URL an oder
- wir fügen dem Aufruf eine JSON-Datei mit den benötigten Informationen hinzu.
Unabhängig davon, welche Variante wir nutzen, ist es wichtig, dass wir die Informationen immer in der gleichen Form übergeben und dass wir diese auch beim Einrichten der Automation so angeben.
Wir können in den folgenden Aktionen nur auf Daten zugreifen, die in einem der vorherigen Testaufrufe auch übergeben wurden. Wir schauen uns das an einem Beispiel an und übergeben einige Parameter, den wir an die URL anhängen – hier email, subject und body. Die URL sieht nun wie folgt aus:
https://hooks.zapier.com/hooks/catch/21909841/2qbfvbz/?email=andre@minhorst.com&subject=Test&body=Dies%20ist%20ein%20Test
Nun können wir in Zapier auf Find new records klicken und sehen den neuen Eintrag. Klicken wir diesen an, erscheint ein Bereich, der alle mit diesem Aufruf gelieferten Informationen anzeigt (siehe Bild 6).
Bild 6: Ein Aufruf mit einem Parameter
Dies können wir nun als Basis für eine weitere Aktion nutzen. Dazu klicken wir auf Continue with selected record und landen in der Auswahl der App, die wir für den nächsten Schritt nutzen wollen.
E-Mail per Outlook versenden
Wie den Parametern unschwer zu entnehmen ist, wollen wir als Aktion eine E-Mail versenden.
Dazu wählen wir im nächsten Schritt, wo es um die App für die folgende Aktion geht, Microsoft Outlook aus (siehe Bild 7).
Bild 7: Auswahl von Microsoft Outlook für die Aktion
Nun wählen wir unter Action event den Eintrag Send Email aus (siehe Bild 8).
Bild 8: Anlegen der Aktion zum Senden einer E-Mail
Unter Account wählen wir nun den Outlook-Account aus, mit dem wir die E-Mails versenden wollen. Wenn Du bereits das Beispiel aus dem Artikel Automation mit Zapier in der Praxis (www.vbentwickler.de/4) ausprobiert hast, findest Du hier bereits einen Account vor.
Anschließend weisen wir der Aktion Send Email die Parameter zu, die wir der URL hinzugefügt haben (siehe Bild 9):
Bild 9: Hinzufügen der Parameter aus dem Trigger
- Für From Email legen wir den Absender als Zeichenkette an.
- Unter To Email(s) wählen wir Querystring Email aus.
- Entsprechende Platzhalter tragen wir für Subject und Body ein und stellen außerdem die Eigenschaft Body Format auf Text ein.
Mit einem Klick auf Continue landen wir wieder im Test-Bereich. Hier können wir nun mit einem Klick auf Test Step einen erneuten Test durchführen.
Wenn wir alles korrekt konfiguriert haben, erscheint kurz danach bereits die versendete E-Mail in unserem Posteingang. Damit sind die ersten Voraussetzungen erfüllt, um das Auslösen des Triggers per VBA zu realisieren
Programmieren des Zapier-Zugriffs mit VBA
Wer bereits einmal die Ansteuerung einer Rest-API programmiert hat, weiß, dass es je nach Authentifizierungsmethode manchmal je nach API etwas komplizierter sein kann, die Anmeldung an der Rest-API zu programmieren.
Da ist es sehr erfreulich, dass dies hier nicht der Fall ist. Es gibt weder eine API-Key noch eine andere Authentifierungsmethode. Wir können den Request einfach an Zapier schicken.
Das ist auch logisch: Immerhin konnten wir das auch einfach über das Browser-Fenster durch Eingabe der URL erledigen.
Eine gewisse Sicherheit ist auch bereits dadurch gegeben, dass Zapier eine URL zusammenstellt, die nicht einfach zu erratende Elemente enthält.
Wenn wir diese URL nur von unserer Access-Anwendung aus aufrufen, besteht auch kaum Gefahr, dass jemand Kenntnis dieser URL erhält.
Wenn wir dennoch die Sicherheit erhöhen möchten, können wir noch einen Parameter hinzufügen, mit dem wir einen selbst vergebenen Schlüssel übergeben. Diesen können wir in der Automation prüfen und diese nur dann durchführen, wenn der Schlüssel korrekt ist.
Zunächst einmal wollen wir jedoch ohne diese zusätzliche Sicherheitsmaßnahme arbeiten.
Vorbereitungen
Dazu erstellen wir eine neue, leere Access-Datenbank und öffnen den VBA-Editor, dem wir zunächst zwei Module zum Verarbeiten von JSON-Dokumenten hinzufügen. Diese heißen mdlJSON und mdlJSONDOM und wir finden diese in der Beispieldatenbank.
Für die in diesen Modulen verwendeten Dictionaries und die für den Zugriff auf Zapier verwendete Klasse ServerXMLHTTP60 benötigen wir zwei Verweise, die wir wie in Bild 10 über den Verweise-Dialog zum VBA-Projekt hinzufügen.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo