Was Sie benötigen
- Ein Make.com-Konto mit Typeform- und Google-Sheets-Verbindung
- Ein Typeform-Formular, zu dem bereits mindestens eine Testantwort abgeschickt wurde
- Eine Google-Tabelle mit Kopfzeile, zum Beispiel: Response ID, Submitted at, Name, Email, Service, Budget, Message
- Fünf Minuten, um eine weitere Testantwort mit leer gelassenen optionalen Fragen abzuschicken
Schritt für Schritt
1. Trigger hinzufügen: Typeform – Watch Responses
Legen Sie ein neues Szenario an und fügen Sie Typeform – Watch Responses hinzu. Make bietet zwei Varianten: eine sofortige, mit einem Blitz-Symbol gekennzeichnet, bei der Sie auf Create a webhook klicken und Typeform Make benachrichtigt, sobald eine Antwort abgeschickt wird, und eine geplante, die Typeform nach dem Zeitplan des Szenarios abfragt. Für diesen Aufbau passt die sofortige Variante. Verbinden Sie Ihr Typeform-Konto und wählen Sie das Formular. Bei der geplanten Variante wählen Sie für den ersten Test eine bestimmte vorhandene Antwort als Startpunkt; bei der sofortigen klicken Sie auf Run once und schicken dann eine neue Testantwort ab.
2. Run once ausführen und die Ausgabe lesen
Klicken Sie auf Run once und öffnen Sie die Blase. Sie sollten die Response ID, den Zeitpunkt der Einreichung und die Antworten sehen. Je nach Version zeigt Make entweder jede Frage mit ihrem Titel als eigenes Feld oder ein einziges Array von Antworten, jeweils mit Feldreferenz und typisiertem Wert (Text, E-Mail, Auswahl, Zahl, Boolean). Erscheinen die Felder nicht, schicken Sie zuerst eine neue Testantwort ab, denn Make lernt die Formularstruktur aus echten Daten.
3. Zuerst auf eine vorhandene Zeile prüfen
Fügen Sie Google Sheets – Search Rows hinzu. Wählen Sie Tabelle und Tabellenblatt und filtern Sie die Spalte Response ID auf gleich der Response ID aus dem Trigger. Setzen Sie das Limit auf 1.
4. Das Ergebnis nutzbar machen: Tools – Numeric aggregator
Eine Suche ohne Ergebnis beendet das Szenario an dieser Stelle, und das würde es auch für jede neue Antwort tun. Ein Numeric aggregator nach der Suche liefert trotzdem ein Bundle, sodass das Szenario weiterläuft. Wählen Sie die Suche als Quellmodul und die Funktion Count. Standardmäßig gibt ein Aggregator auch dann ein Ergebnis aus, wenn keine Bundles bei ihm ankommen; eine neue Antwort ergibt also den Wert 0, und der Lauf geht weiter. Lassen Sie die erweiterte Option Stop processing after an empty aggregation ausgeschaltet.
5. Filter: nur weitermachen, wenn die Anzahl 0 ist
Klicken Sie auf die Verbindung hinter dem Aggregator und legen Sie einen Filter an: Ergebnis des Aggregators gleich 0. Existiert bereits eine Zeile mit dieser Response ID, endet der Lauf hier ohne Aufhebens.
6. Zeile hinzufügen: Google Sheets – Add a Row
Ordnen Sie jede Spalte zu:
- Response ID: die Response ID aus dem Trigger (das Feld heißt möglicherweise token)
- Submitted at:
{{formatDate(1.submitted_at; "YYYY-MM-DD HH:mm")}} - Name, Email, Service, Budget, Message: die jeweils passenden Antworten
Zeigt Ihre Modulversion ein Feld pro Frage, ziehen Sie sie direkt hinein. Zeigt sie ein Array von Antworten, holen Sie jeden Wert mit map() und get() und filtern das Array nach der Feldreferenz der Frage, zum Beispiel:
{{get(map(1.answers; "text"; "field.ref"; "email_question"); 1)}}
Testen Sie genau diese Formel mit Run once, bevor Sie sich darauf verlassen, denn die Eigenschaftsnamen können sich zwischen Versionen unterscheiden. Feste Referenzen an Ihren Fragen in Typeform machen das deutlich weniger anfällig, als sich auf Titel zu verlassen.
7. Optionale Fragen behandeln
Eine übersprungene optionale Frage taucht meist gar nicht in den Antworten auf, der zugeordnete Wert ist also leer. Bei reinem Text ist das unproblematisch. Sobald eine Funktion darum liegt, sichern Sie sie ab:
{{ifempty(1.budget; "not given")}}
Bei Datumsfeldern verwenden Sie if(), damit nie versucht wird, einen leeren Wert zu formatieren:
{{if(1.preferred_date; formatDate(1.preferred_date; "YYYY-MM-DD"); "")}}
Bei Fragen mit Mehrfachauswahl ist die Antwort ein Array. Wandeln Sie es mit join() in Text um:
{{join(1.services; ", ")}}
8. Zweimal testen
Schicken Sie eine Testantwort mit allen beantworteten Fragen ab und prüfen Sie die Zeile. Schicken Sie eine weitere ab, bei der optionale Fragen übersprungen wurden. Führen Sie dann in Make dieselbe Antwort erneut aus und bestätigen Sie, dass keine zweite Zeile entsteht. Genau dafür ist die Prüfung in den Schritten 3 bis 5 da.
9. Einschalten
Aktivieren Sie das Szenario. Mit dem sofortigen Trigger läuft es bei jeder abgeschickten Antwort; beim geplanten Trigger legen Sie einen Zeitplan fest, der dazu passt, wie schnell Zeilen erscheinen sollen. Sehen Sie nach der ersten echten Antwort in den History-Tab.
Häufige Fehler und Lösungen
Die neue Frage erscheint nicht im Mapping-Panel. Make hat die Formularstruktur aus einer früheren Antwort gelernt. Schicken Sie eine neue Antwort ab, die die Frage enthält, und führen Sie das Szenario noch einmal aus, damit die Struktur aktualisiert wird. In manchen Fällen müssen Sie das Modul neu öffnen oder neu zuordnen.
Antworten landen nach einer Formularänderung in den falschen Spalten. Wenn Sie nach Position oder nach einer automatisch erzeugten Referenz zuordnen, kann das Einfügen einer Frage alles verschieben. Vergeben Sie in Typeform für jede Frage eine feste Referenz, ordnen Sie nach Referenz zu und halten Sie die Spaltenüberschriften der Tabelle stabil.
In der Zelle steht etwas wie [object Object] oder eine einzelne Klammer. Die Antwort ist ein Array oder ein strukturiertes Objekt, meist bei einer Multiple-Choice-Frage. Verwenden Sie join() für Arrays und wählen Sie bei Auswahlantworten die Eigenschaft für das Label.
Doppelte Zeilen. Typeform kann eine Benachrichtigung erneut senden, wenn keine schnelle Erfolgsantwort ankommt, und ein Szenario, das aus- und wieder eingeschaltet wird, kann Antworten doppelt aufgreifen. Die Prüfung der Response ID vor dem Hinzufügen der Zeile, wie in den Schritten 3 bis 5, beseitigt das Problem an der Wurzel. Typeform kann einen Webhook nach wiederholten Fehlern außerdem deaktivieren. Treffen gar keine Antworten mehr ein, prüfen Sie den Webhook-Status in der aktuellen Typeform- und Make-Oberfläche.
Eine Formel schlägt nur bei manchen Antworten fehl. Fast immer ist eine optionale Frage leer geblieben. Umschließen Sie den Wert mit ifempty() oder if() wie in Schritt 7 und führen Sie das Szenario mit einer Antwort aus, bei der die Frage übersprungen wurde, erneut aus.