Wie man E-Mails nach Excel / Google Tabellen 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 ist eine kurze Liste typischer 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 zur Listenverwaltung parsen.
  • Offene Probleme oder Anfragen mit Teams über freigegebene Tabellen 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 eines, das Ihren Anforderungen entspricht).
  • Installieren und Gmail-Konto verbinden.
  • Label/Ordner oder Suchfilter auswählen.
  • Export ausführen → Daten erscheinen in Ihrem Sheet.
  • Tipp: Auto-Aktualisierung einrichten, um täglich zu aktualisieren.

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 sauberen Spalten
  • Fügt ein benutzerdefiniertes Menü hinzu: E-Mail-Export → Export ausführen
  • Ermöglicht Ihnen die Steuerung von: Suchabfrage, max. E-Mails und ob Nachrichteninhalte 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 Sie Speichern, dann AusführenonOpen() um das benutzerdefinierte Menü hinzuzufügen.
  5. Gehen Sie zurück im Sheet zu E-Mail-Export → Einstellungen-Tabelle (es erstellt einen Konfigurations-Tab und Kopfzeilen).
  6. Geben Sie Ihre Suche ein 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 Methode "Als CSV exportieren" in Outlook:

  • Navigieren 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 spezifischen E-Mail-Attribute auszuwählen, die Sie benötigen, wie z. B. VonAnBetreffEmpfangsdatum, usw.
  • Schließen Sie den Export ab 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 Kopfzeileninformationen oder Metadaten exportieren.

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

  • Power Query in Excel kann direkt mit Outlook verbunden werden und nur die erforderlichen Felder filtern.
  • Diese Methode ermöglicht fortlaufende Aktualisierungen und Automatisierung, während die Daten minimal bleiben.
  1. Öffnen Sie Excel und wechseln 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 Mailbox-Ordner (z. B. Posteingang) aus, der die gewünschten E-Mails enthält.
  5. Wählen Sie im Power Query-Editor nur die benötigten Spalten aus, wie Betreff, Von, An und Empfangsdatum.
  6. Wenden Sie beliebige Filter an, um E-Mails einzugrenzen, z. B. 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 sondieren wir das Interesse.

Hinweis: Der Export nach Excel im Vergleich zu Google Tabellen macht keinen Unterschied. Beides sind großartige Werkzeuge, entwickelt von Google bzw. Microsoft.

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

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

Meine Mission ist es, der beste digitale Partner zu sein, den Sie je hatten: um Ihren Zeitplan einzuhalten, Ihre E-Mails zu verwalten oder 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 Ihre Belastung verringert und Ihnen mehr Ihrer wertvollen Zeit zurückgibt.
Gemeinsam werden wir Ihre Aufgabenliste bewältigen, organisiert bleiben und jeden Tag produktiver gestalten.

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

Probieren Sie mich hier aus

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