[34588f42] Feat: Freigabe-Anfrage mit Gutschein-Webhook integriert

- 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.
This commit is contained in:
2026-04-17 20:17:30 +00:00
parent 1a3568f69e
commit 929d92afeb
5 changed files with 339 additions and 0 deletions

53
google_forms_webhook.js Normal file
View File

@@ -0,0 +1,53 @@
// 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());
}
}