📊 Google Sheet Integration einrichten

Mit dieser Integration werden deine Bestellungen automatisch in ein Google Sheet übertragen, wenn du auf "Annehmen + ins Sheet" klickst. So hast du alle Bestellungen übersichtlich an einem Ort!

1

Google Sheet erstellen

  1. Öffne Google Sheets
  2. Klicke auf "+ Neu" → "Leeres Tabellendokument"
  3. Benenne das Sheet z.B. "Shop-Bestellungen"
  4. Notiere dir die Sheet-ID aus der URL:
    https://docs.google.com/spreadsheets/d/HIER_IST_DIE_ID/edit
2

Apps Script öffnen

  1. Im Google Sheet: Menü "Erweiterungen" → "Apps Script"
  2. Es öffnet sich ein neuer Tab mit dem Script-Editor
  3. Lösche den vorhandenen Code komplett
3

Script-Code einfügen

Kopiere den folgenden Code und füge ihn ein:

function doPost(e) {
  const payload = parseRequest_(e);
  if (!payload || !payload.id) {
    return json_({ ok:false, error:'no/invalid payload' });
  }
  
  // ⚠️ HIER DEINE SHEET-ID EINTRAGEN!
  const SS_ID = 'DEINE_SHEET_ID_HIER';
  const SHEET_NAME = 'Shop-Bestellungen';
  
  const ss = SpreadsheetApp.openById(SS_ID);
  const sh = ss.getSheetByName(SHEET_NAME) || ss.getActiveSheet();
  
  const HEAD = [
    'Datum','OrderID','Kunde','Notiz',
    'Nr','Code','Bestellcode','ml',
    'Preis (EUR)','Zwischensumme','Rabatt','Gesamt'
  ];
  
  // Header immer setzen
  sh.getRange(1, 1, 1, HEAD.length).setValues([HEAD]);
  
  const created = payload.createdAt ? new Date(payload.createdAt) : new Date();
  const name    = (payload.customerName || '').trim();
  const note    = payload.note || '';
  const sum     = payload.summary || {};
  const lines   = Array.isArray(payload.lines) ? payload.lines : [];
  
  const rows = lines.map(row => ([
    created,
    payload.id,
    name,
    note,
    row.nr || '',
    row.code || '',
    row.bestellcode || '',
    row.ml || '',
    +row.preis || 0,
    +sum.subtotal || 0,
    +sum.discount || 0,
    +sum.total || 0
  ]));
  
  if (rows.length) {
    sh.getRange(sh.getLastRow()+1, 1, rows.length, HEAD.length)
      .setValues(rows);
  }
  
  return json_({ ok:true });
}

function parseRequest_(e){
  try{
    if (e?.postData?.contents) return JSON.parse(e.postData.contents);
    if (e?.parameter?.payload) return JSON.parse(e.parameter.payload);
  }catch(_){}
  return null;
}

function json_(obj){
  return ContentService.createTextOutput(JSON.stringify(obj))
    .setMimeType(ContentService.MimeType.JSON);
}
⚠️ Wichtig: Ersetze DEINE_SHEET_ID_HIER mit der ID aus Schritt 1!
4

Script speichern

  1. Klicke auf das Disketten-Symbol 💾 oder drücke Strg+S
  2. Gib dem Projekt einen Namen, z.B. "Shop-Webhook"
5

Als Web-App bereitstellen

  1. Klicke oben rechts auf "Bereitstellen" → "Neue Bereitstellung"
  2. Klicke auf das Zahnrad ⚙️ → wähle "Web-App"
  3. Fülle aus:
    • Beschreibung: z.B. "Shop Webhook v1"
    • Ausführen als: Ich
    • Zugriff: Jeder
  4. Klicke auf "Bereitstellen"
6

Zugriff autorisieren

  1. Es erscheint ein Fenster "Autorisierung erforderlich"
  2. Klicke auf "Zugriff autorisieren"
  3. Wähle dein Google-Konto
  4. Bei der Warnung "App nicht verifiziert": Klicke auf "Erweitert" → "Zu [Projektname] wechseln (unsicher)"
  5. Klicke auf "Zulassen"
💡 Das ist normal! Da du das Script selbst erstellt hast, ist es nicht von Google verifiziert.
7

Webhook-URL kopieren

  1. Nach der Autorisierung siehst du die "Web-App-URL"
  2. Klicke auf "Kopieren" 📋
  3. Die URL sieht so aus:
    https://script.google.com/macros/s/ABC123.../exec
✓

URL hier einfügen

  1. Füge die kopierte URL oben in das Feld "Webhook-URL" ein
  2. Klicke auf "Speichern"
  3. Fertig! 🎉 Bei jeder Bestellung, die du mit "Annehmen + ins Sheet" bestätigst, wird sie automatisch in dein Google Sheet eingetragen.

❓ Häufige Fragen

Warum sehe ich keine Daten im Sheet?

Prüfe, ob die Sheet-ID im Script korrekt ist und ob du "Annehmen + ins Sheet" geklickt hast (nicht nur "Annehmen").

Kann ich die Spalten anpassen?

Ja! Du kannst das Script bearbeiten und die HEAD-Variable ändern. Danach musst du eine "Neue Bereitstellung" erstellen.

Was passiert bei einem Fehler?

Die Bestellung wird trotzdem im Shop angenommen. Du siehst eine Meldung, wenn der Sheet-Export fehlgeschlagen ist.