Email Betreff und Nachricht von GMail abrufen Google Tabellen Script

In diesem sehr kurzen Tutorial und sogenannten Snippet "Email Betreff und Nachricht von GMail abrufen Google Tabellen Script" zeige ich Euch wie Ihr ein Script erstellen könnt welches automatisch den Betreff und die Nachrichten des Google Mail Kontos ausgibt. Ihr könnt nicht nur die letzten Emails abrufen sondern auch nach einem bestimmten Label suchen oder ein Suchwort benutzen. Das Ganze wird über 4 Spalten ausgegeben.



Im Script für die Funktion selbst habe ich die einzelnen Zeilen kommentiert. Hiermit sollte es eigentlich einfach sein das Script vom Aufbau her zu verstehen.

Das Script könnt Ihr kopieren und müsst es in Euren Scripteditor einfügen.

Vorab ein Video welches Euch zeigt wie man ein einfaches Script programmieren kann und wie Ihr den Scripteditor aufrufen könnt:
Mein erstes Script programmieren mit GOOGLE Tabellen

Achtung:

Benutzt zum Üben eine separate Tabelle für Testzwecke oder eine Kopie des Originals damit Euch keine Daten verloren gehen.

Beschreibung:

Ausgegeben wird in Spalte:
A: Die Threadnummer und die Anzahl der enthaltenen Nachrichten
B: Der Betreff:
C: Von, CC, BCC, Datum, und Nachrichten ID
D: Die Nachricht

Die Funktion emailBetreffUndNachrichtAbrufen() ist eine Funktion die Ihr direkt über den Scripteditor aufrufen könnt. Ihr könnt natürlich auch  einen Button erstellen um diese Funktion über ein Klick darauf auszuführen. Wie das mit dem Button funktioniert zeige ich in dem oben angegebenen Video.

Im oberen Bereich des Scriptes wird das aktive Tabellenblatt zugewiesen.

Ich benutze noch eine Zählervariable namens counter weil ich die Ausgabe nummerieren möchte.

Mit GmailApp.getInboxThreads(0, 10); holen wir uns die ersten 10 Threads und weisen dieses Array der Variablen threads zu.
Wer sich auf einen bestimmten Label beziehen möchte kann auch folgende Zeile benutzen:
GmailApp.getUserLabelByName('DEIN LABEL').getThreads(0,10)
Hier muss der Label in Deinem Posteingang vorkommen und wenn ich richtig liege dann muss der Eintrag auch in der obersten Ebene liegen. Untergeordnete Labels haben bei mir nicht funktioniert (liegt aber vielleicht auch an mir und muss dass später nochmal testen).
Hinweis: Achtet darauf dass wenn Ihr die Anzahl der Threads erhöht auch die Laufzeit des Scripts erhöht wird. Das kann eventuell dazu führen dass dieses Script wegen Zeitüberschreitung abgebrochen wird.

Doppelte For Schleife

Ich benutze hier eine doppelte for Schleife. In der ersten for Schleife arbeite ich das Array mit den Threads ab. Mit threads.length holen wir uns die Anzahl der Threads und können damit die Schleife passend beenden.
In der äußeren Schleife hole ich mir die Anzahl der enthaltenen Nachrichten der jeweiligen Threads.
Die Nummerierung der Threads und die Anzahl der Nachrichten innerhalb von einem Thread schreibe ich über setValue in Spalte A.
In Spalte B schreibe ich mittels threads[i].getFirstMessageSubject() den Betreff.

Die innere for Schleife überprüft wie viele Nachrichten innerhalb eines Threads enthalten sind und wird entsprechend der Anzahl durchlaufen. Die Anzahl der Nachrichten ermittle ich über anzahlNachrichten=threads[i].getMessages().length.
In der inneren Schleife gebe ich weitere Informationen über die Nachrichten in Spalte C aus (Von, CC, BCC, Datum, Nachrichten ID).
Spalte D verwende ich dazu um die Nachricht mit der Funktion threads[i].getMessages()[j].getPlainBody() auszugeben.

Zum Schluss wird der counter bei jedem Durchlauf der Schleife immer um eins erhöht.
Wenn Ihr andere Schleifen benutzen wollt dann schaut Euch auch mal diese Seite an:
Übersicht der Schleifen in Google Tabellen

Für die Eingabe des Labels oder des Suchwortes könnt Ihr natürlich auch die Daten aus einer Zelle mit getRange und getValue auslesen anstatt diese immer im Script zu ändern. In vielen Tutorials hier auf meiner Webseite über die Scriptprogammierung zeige ich ja wie das geht.

Email Betreff und Nachricht von GMail abrufen Google Tabellen Script

Die Benutzung der Scripte erfolgt natürlich wie immer auf eigene Gefahr.

Euch gefällt das Script und Ihr wollt Euch gerne bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] 😉

Dies ist Teil der Serie: "Google Tabellen Script Programmierung"

Dieses Tutorial ist Teil einer Serie die als eine Art Datenbank für kleinere Snippets dient. Damit habt Ihr die Möglichkeit für Eure Projekte einen Teil des Codes hier direkt zu kopieren und wie in Modulbauweise das ganze anzuwenden.

Die Liste aller Snippets findet Ihr hier:
Google Tabellen Script Programmierung

 



Das könnte Dich auch interessieren

2 Kommentare

  1. Eckhard sagt:

    Hallo Chris!

    Es funktioniert auf Anhieb sehr gut!

    Dabei ist mir der Gedanke gekommen, ob man auch anders vorgehen kann:

    Kann google tabellen/skript laufend prüfen (Webhook?) ob eine mail mit einem bestimmten Text in der Überschrift reinkommt und diese dann importiert?
    Hintergrund: Meine Fritz.box sendet mir per mail Anrufe in Abwesenheit realtime zu. Diese Info hätte ich gerne in meinem "Dashboard" (google tabellen).
    Und so könnte ich auch ad hoc breaking news, die über Mail reinkommen, super verarbeiten.

    Vielleicht hast Du hierzu ja eine Idee.
    Gruß
    Eckhard

    • Chris sagt:

      Normalerweise sollte das funktionieren. In der Schleife wo die Nachricht oder vielleicht auch nur die Betreffzeile ausgelesen wird könntest Du über eine IF Abfrage checken ob der Inhalt vorhanden ist. Wenn der Inhalt nicht vorhanden ist wird die Schleife weiter durchlaufen. Sollte der Inhalt vorhanden sein, kannst Du diesen auslesen und die Schleife mit break beenden.
      Wenn Du Dir in der Tabelle einen kleinen Bereich reservierst könntest Du die Nachricht immer in die erste Zeile schreiben lassen. Eventuell kannst Du Dir über eine Art Trigger diese Funktion zum Abrufen der Email immer automatisch aktualieren lassen oder erstellst einen Button für die Funktion oder machst das in die Funktion onUpdate (führt die Funktion aus sobald eine Zelle geändert wird).
      Viele Grüße
      Chris

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert