- Datenbank um 'DiscountCode' Modell erweitert.
- Neue Backend API-Routen für Upload von Gutscheincodes, Abfrage der Verfügbarkeit und Webhook-Listener (Google Forms) zur automatischen Dankes-E-Mail erstellt.
- Frontend (App.tsx) um ein neues Tool ('Anfrage Veröffentlichung') erweitert, das anhand der CSV-Daten Platzhalter (<Name>, <Kind>, <Kindergarten>) personalisiert und Mails via Gmail versendet.
- Google Forms Webhook Script (google_forms_webhook.js) als Kopiervorlage erstellt.
53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
// ANLEITUNG ZUR EINRICHTUNG IM GOOGLE FORMULAR
|
|
// 1. Öffne dein Google Formular (Freigabe zur Veröffentlichung).
|
|
// 2. Klicke oben rechts auf das Drei-Punkte-Menü und wähle "Skript-Editor".
|
|
// 3. Kopiere diesen Code hinein und speichere (Strg+S).
|
|
// 4. Ersetze die WEBHOOK_URL durch deine korrekte Domain.
|
|
// 5. Klicke im Skript-Editor links auf die "Uhr" (Trigger).
|
|
// 6. Füge einen neuen Trigger hinzu:
|
|
// - Funktion: onSubmit
|
|
// - Ereignisquelle: Aus Formular
|
|
// - Ereignistyp: Beim Senden des Formulars
|
|
// 7. Akzeptiere die Berechtigungen von Google.
|
|
|
|
const WEBHOOK_URL = "https://floke-ai.duckdns.org/fotograf-de-api/api/publish-request/webhook";
|
|
|
|
function onSubmit(e) {
|
|
try {
|
|
// Hole alle Antworten
|
|
var itemResponses = e.response.getItemResponses();
|
|
var email = e.response.getRespondentEmail(); // Geht nur, wenn "E-Mail-Adressen erfassen" aktiv ist!
|
|
|
|
// Fallback: Wenn E-Mail-Erfassung nicht global an ist, suche nach einem Feld namens "E-Mail"
|
|
if (!email) {
|
|
for (var i = 0; i < itemResponses.length; i++) {
|
|
var title = itemResponses[i].getItem().getTitle().toLowerCase();
|
|
if (title.indexOf("e-mail") !== -1 || title.indexOf("email") !== -1) {
|
|
email = itemResponses[i].getResponse();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!email) {
|
|
Logger.log("Keine E-Mail-Adresse gefunden.");
|
|
return;
|
|
}
|
|
|
|
var payload = {
|
|
"email": email
|
|
};
|
|
|
|
var options = {
|
|
"method": "post",
|
|
"contentType": "application/json",
|
|
"payload": JSON.stringify(payload)
|
|
};
|
|
|
|
UrlFetchApp.fetch(WEBHOOK_URL, options);
|
|
Logger.log("Webhook erfolgreich an " + WEBHOOK_URL + " gesendet. Email: " + email);
|
|
|
|
} catch (err) {
|
|
Logger.log("Fehler: " + err.toString());
|
|
}
|
|
} |