Wie man E-Mails nach Excel / Google Sheets exportiert

Wenn Sie Ihre E-Mails in einer Tabellenkalkulation benötigen, erfahren Sie hier genau, wie das geht. Es gibt Apps, die Ihre E-Mail-Nachrichten und extrahierten Daten parsen und in Google-Tabellen exportieren. ActorAi kann Ihnen dabei ebenfalls helfen.

Hier eine kurze Liste gängiger Anwendungsfälle für den Export von E-Mails nach Excel oder Google Tabellen:

  • Bestell- und Versandbenachrichtigungen exportieren.
  • E-Mail-Leads für CRM- oder Datenbankaktualisierungen exportieren.
  • Unzustellbare E-Mail-Adressen für die Listenpflege analysieren.
  • Offene Probleme oder Anfragen mit Teams über geteilte Tabellenblätter teilen.
  • Strukturierte E-Mail-Daten in Datenbanken oder Geschäftsanwendungen importieren.
  • Wichtige Geschäftsemails sichern und archivieren.
  • Verteilerlisten aus Kontakten und Adressen erstellen.
  • Finanz- und Ausgabeninformationen für Berichte extrahieren.

E-Mails von Gmail in Google Tabellen exportieren

Option A – Mit Google Workspace-Add-on (einfachste Methode)

  • Google Sheets öffnen → Erweiterungen → Add-ons.
  • Nach dem Add-on „Gmail to Sheets“ suchen (wählen Sie das Add-on, das Ihren Anforderungen entspricht)
  • Installieren und Gmail-Konto verbinden.
  • Label/Ordner oder Suchfilter auswählen.
  • Export ausführen → Daten erscheinen in Ihrem Tabellenblatt.
  • Tipp: Auto-Aktualisierung einrichten, um tägliche Updates zu erhalten.

Option B – Mit Google Apps Script (Do-it-yourself-Methode)

  • Zieht E-Mails, die einer Gmail-Suche entsprechen (Label, from:, subject:, after:, usw.)
  • Schreibt sie in das aktive Tabellenblatt mit aufgeräumten Spalten
  • Fügt ein eigenes Menü hinzu: E-Mail-Export → Export ausführen
  • Lässt Sie Folgendes steuern: Suchabfrage, maximale Anzahl an E-Mails und ob Nachrichtentexte eingeschlossen werden sollen

Google Apps Script einrichten (DIY-Methode zum Export nach Excel)

  1. Öffnen Sie ein neues Google Sheet.
  2. Erweiterungen → Apps Script.
  3. Löschen Sie jeglichen Code und fügen Sie das untenstehende Skript ein.
  4. Klicken Speichern, dann AusführenonOpen() um das benutzerdefinierte Menü hinzuzufügen.
  5. Wechseln Sie im Sheet zu E-Mail-Export → Setup-Blatt (es erstellt einen Tab „Config“ und Header.)
  6. Geben Sie Ihre Suchanfrage in Config!B2 (Beispiele unten), dann E-Mail-Export → Export ausführen.
/**************************************
 * Gmail → Google Sheets Exporter
 * Simple, DYI method for tech advanced.
 **************************************/

const CONFIG_SHEET = 'Config';
const OUTPUT_SHEET = 'Emails';
const PROPERTY_STORE = PropertiesService.getDocumentProperties();

function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Email Export')
    .addItem('Setup sheet', 'setupSheet')
    .addItem('Run export', 'exportEmails')
    .addToUi();
}

function setupSheet() {
  const ss = SpreadsheetApp.getActive();
  // Config sheet
  let conf = ss.getSheetByName(CONFIG_SHEET);
  if (!conf) conf = ss.insertSheet(CONFIG_SHEET);
  conf.clear();

  conf.getRange('A1').setValue('Setting');
  conf.getRange('B1').setValue('Value');

  const rows = [
    ['Search query', 'label:inbox newer_than:30d'], // B2
    ['Max emails to fetch (per run)', 500],          // B3 (limit to avoid timeouts)
    ['Include message body? (true/false)', false],   // B4
    ['Body max characters', 5000],                  // B5
    ['Continue from last run? (true/false)', false]  // B6
  ];
  conf.getRange(2, 1, rows.length, 2).setValues(rows);
  conf.autoResizeColumns(1, 2);

  // Output sheet
  let out = ss.getSheetByName(OUTPUT_SHEET);
  if (!out) out = ss.insertSheet(OUTPUT_SHEET);
  out.clear();

  const headers = [
    'Date',
    'From',
    'To',
    'Subject',
    'Snippet',
    'Thread ID',
    'Message ID',
    'Labels',
    'Has Attachments',
    'Thread Link',
    'Message Link',
    'Body (optional)'
  ];
  out.getRange(1, 1, 1, headers.length).setValues([headers]);
  out.setFrozenRows(1);
  out.autoResizeColumns(1, headers.length);

  SpreadsheetApp.getUi().alert('Setup complete. Enter your query in Config!B2, then run "Email Export → Run export".');
}

function getConfig_() {
  const ss = SpreadsheetApp.getActive();
  const conf = ss.getSheetByName(CONFIG_SHEET);
  if (!conf) throw new Error('Config sheet missing. Run "Setup sheet" first.');

  const getVal = (row) => conf.getRange(row, 2).getValue();

  return {
    query: String(getVal(2) || '').trim(),
    maxEmails: Number(getVal(3) || 500),
    includeBody: String(getVal(4)).toLowerCase() === 'true',
    bodyMaxChars: Number(getVal(5) || 5000),
    continueFromLast: String(getVal(6)).toLowerCase() === 'true',
  };
}

function exportEmails() {
  const cfg = getConfig_();
  if (!cfg.query) throw new Error('Please fill a Gmail search in Config!B2.');

  const ss = SpreadsheetApp.getActive();
  const out = ss.getSheetByName(OUTPUT_SHEET) || ss.insertSheet(OUTPUT_SHEET);

  // Resume support (optional)
  let startIndex = 0;
  if (cfg.continueFromLast) {
    startIndex = Number(PROPERTY_STORE.getProperty('startIndex') || 0);
  } else {
    PROPERTY_STORE.deleteProperty('startIndex');
    // If not continuing, start fresh by clearing previous rows (keep header)
    const lastRow = out.getLastRow();
    if (lastRow > 1) out.getRange(2, 1, lastRow - 1, out.getLastColumn()).clearContent();
  }

  const BATCH_SIZE_THREADS = 100; // Gmail returns threads, we’ll page through them
  const rows = [];
  let fetchedEmails = 0;

  while (fetchedEmails < cfg.maxEmails) {
    const threads = GmailApp.search(cfg.query, startIndex, BATCH_SIZE_THREADS);
    if (!threads.length) break;

    for (const thread of threads) {
      const msgs = thread.getMessages();
      for (const msg of msgs) {
        if (fetchedEmails >= cfg.maxEmails) break;

        const date = msg.getDate();
        const from = msg.getFrom();
        const to = msg.getTo();
        const subject = msg.getSubject() || '';
        const snippet = msg.getPlainBody().slice(0, 120).replace(/\s+/g, ' ').trim();
        const threadId = thread.getId();
        const msgId = msg.getId();
        const labels = thread.getLabels().map(l => l.getName()).join(', ');
        const hasAttachments = msg.getAttachments().length > 0;

        const threadLink = `https://mail.google.com/mail/u/0/#all/${threadId}`;
        const messageLink = `https://mail.google.com/mail/u/0/#inbox/${msgId}`;

        let body = '';
        if (cfg.includeBody) {
          // Prefer plain body; fallback to HTML stripped
          body = msg.getPlainBody();
          if (!body) {
            const html = msg.getBody();
            body = stripHtml_(html);
          }
          if (cfg.bodyMaxChars > 0 && body.length > cfg.bodyMaxChars) {
            body = body.slice(0, cfg.bodyMaxChars) + '…';
          }
        }

        rows.push([
          date,
          from,
          to,
          subject,
          snippet,
          threadId,
          msgId,
          labels,
          hasAttachments,
          threadLink,
          messageLink,
          body
        ]);

        fetchedEmails++;
      }
      if (fetchedEmails >= cfg.maxEmails) break;
    }

    startIndex += BATCH_SIZE_THREADS;
    // Safety: avoid 6-minute execution limit
    if (Utilities.getRemainingDailyQuota && rows.length >= 5000) break;
  }

  if (rows.length) {
    out.insertRowsAfter(out.getLastRow() || 1, rows.length);
    out.getRange(out.getLastRow() - rows.length + 1, 1, rows.length, rows[0].length).setValues(rows);
    out.autoResizeColumns(1, out.getLastColumn());
  }

  if (cfg.continueFromLast) {
    PROPERTY_STORE.setProperty('startIndex', String(startIndex));
  }

  SpreadsheetApp.getUi().alert(`Export complete: ${fetchedEmails} emails added.`);
}

function stripHtml_(html) {
  // Lightweight HTML → text
  return String(html || '')
    .replace(/<style[\s\S]*?<\/style>/gi, '')
    .replace(/<script[\s\S]*?<\/script>/gi, '')
    .replace(/<[^>]+>/g, ' ')
    .replace(/\s+/g, ' ')
    .trim();
}

Einfache Skriptversion für Google Sheets.

function exportSimple() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const query = 'label:inbox newer_than:7d';
  const threads = GmailApp.search(query, 0, 100);
  const rows = [['Date','From','Subject','Snippet','Thread Link']];
  threads.forEach(t => {
    t.getMessages().forEach(m => {
      rows.push([
        m.getDate(),
        m.getFrom(),
        m.getSubject(),
        m.getPlainBody().slice(0,120).replace(/\s+/g,' ').trim(),
        'https://mail.google.com/mail/u/0/#all/' + t.getId()
      ]);
    });
  });
  sheet.clear().getRange(1,1,rows.length,rows[0].length).setValues(rows);
}

E-Mails von Outlook nach Excel exportieren

1. Verwenden Sie die Export‑als‑CSV‑Funktion in Outlook:

  • Navigieren Sie zu Datei > Öffnen & Exportieren > Importieren/Exportieren.
  • Wählen Sie In Datei exportieren und wählen Sie Kommagetrennte Werte (CSV).
  • Wählen Sie den E-Mail-Ordner, den Sie exportieren möchten (z. B. Posteingang).
  • Wenn Sie dazu aufgefordert werden, klicken Sie Benutzerdefinierte Felder zuordnen um nur die E-Mail-Attribute auszuwählen, die Sie benötigen, wie z. B. VonAnBetreffEmpfangsdatum, usw.
  • Vervollständigen Sie den Export und öffnen Sie die CSV in Excel, um nur die Metadaten anzuzeigen.

2. Filtern und kopieren Sie textbasierte Metadaten in Outlook:

  • Erstellen Sie in Outlook eine benutzerdefinierte Ansicht, in der nur die gewünschten Spalten sichtbar sind (z. B. Absender, Datum usw.).
  • Wählen Sie die E-Mails aus, kopieren Sie sie und fügen Sie sie dann in Excel ein.
  • Diese Methode kann bei kleinen Mengen schneller sein, insbesondere wenn Sie nur bestimmte Header-Informationen oder Metadaten exportieren.

3. Verwenden Sie Power Query für dynamischen Export:

  • Power Query in Excel kann sich direkt mit Outlook verbinden und nur die benötigten Felder filtern.
  • Mit dieser Methode sind fortlaufende Aktualisierungen und Automatisierungen möglich, während die Datenmenge gering bleibt.
  1. Öffnen Sie Excel und gehen Sie zur Registerkarte 'Daten'.
  2. Wählen Sie 'Daten abrufen' > 'Aus anderen Quellen' > 'Aus Microsoft Exchange'.
  3. Geben Sie Ihre Outlook-E-Mail-Adresse ein und melden Sie sich an, um die Verbindung herzustellen.
  4. Wählen Sie den Postfachordner (z. B. Posteingang), der die E-Mails enthält, die Sie exportieren möchten.
  5. Wählen Sie im Power Query-Editor nur die Spalten aus, die Sie benötigen, z. B. Betreff, Von, An und Empfangsdatum.
  6. Wenden Sie Filter an, um E-Mails einzuschränken, zum Beispiel nach Datum oder Absender.
  7. Klicken Sie auf Schließen & Laden, um die gefilterten E-Mail-Daten in eine Excel-Tabelle zu importieren.
  8. Aktualisieren Sie die Abfrage jederzeit, um Ihre Daten mit neuen oder geänderten E-Mails zu aktualisieren.

Hinweis: Wir planen, dies innerhalb von Actor als E-Mail‑App zu integrieren. Derzeit prüfen wir das Interesse.

Hinweis: Der Export nach Excel oder Google Tabellen macht keinen Unterschied. Beide sind großartige Werkzeuge, entwickelt von Microsoft bzw. Google.

Jetzt haben Sie Ihre E-Mails in einer Tabellenkalkulation – bereit zur Analyse, zum Filtern oder zum Teilen. Wenn Sie dies regelmäßig benötigen, brauchen Sie eine Automatisierung, die den Vorgang in gewünschten Intervallen wiederholt.

Hallo, ich bin ACTOR, entwickelt, um das Leben vielbeschäftigter Fachkräfte wie Ihnen zu vereinfachen.

Meine Mission ist es, der beste digitale Partner zu sein, den Sie je hatten: um Ihren Zeitplan im Blick zu behalten, Ihre E-Mails zu verwalten und Ihnen zu helfen, sich auf das Wesentliche zu konzentrieren.

Videos: Erste Schritte

Ich lerne und verbessere mich ständig, weil ich bei jeder Interaktion Ihre Bedürfnisse besser verstehen möchte.

Betrachten Sie mich als Ihren verlässlichen Co‑Piloten, der Ihren Stress reduziert und Ihnen mehr von Ihrer kostbaren Zeit zurückgibt.
Gemeinsam bewältigen wir Ihre To‑Do-Liste, bleiben organisiert und machen jeden Tag produktiver.

Lassen Sie mich die Kleinigkeiten übernehmen, damit Sie sich auf das große Ganze konzentrieren können. Bereit, Ihren Tag reibungsloser zu gestalten? Legen wir los!

Probieren Sie mich hier aus

Hinweis: Die Vergleiche oder Angaben auf diesem Artikel bzw. dieser Seite basieren auf öffentlich zugänglichen Informationen und sind möglicherweise nicht vollständig umfassend. Alle genannten Produkt- und Markennamen sind Marken oder eingetragene Marken ihrer jeweiligen Inhaber.