Web Design

Erfassen Sie Gmail-Nachrichten in einem Google-Blatt

Mit Google Apps Script können Vermarkter Gmail-Nachrichten erfassen, sie nach relevanten Informationen analysieren und zeilenweise zu einer Google-Tabelle hinzufügen.

Dies kann besonders hilfreich sein, um Leads oder Kontakte zu erfassen.

Hier ist ein Szenario. Stellen Sie sich vor, Ihr E-Commerce-Unternehmen hat sich entschieden, mit einer Wohltätigkeitsorganisation zusammenzuarbeiten. Die Teilnehmer reichen Vorschläge über die Website der Wohltätigkeitsorganisation ein. Ihre Aufgabe ist es, diese Vorschläge durchzulesen, Personen auszuwählen, denen Ihr Unternehmen helfen kann, und sie zu kontaktieren, um loszulegen.

Das Problem ist, dass die Website der Wohltätigkeitsorganisation in den 1990er Jahren auf einer gesperrten, proprietären Plattform erstellt wurde. Einsendungen auf der Website können nicht zu einer Datenbank hinzugefügt oder anderweitig gespeichert werden. Stattdessen können diese Einsendungen nur im Nur-Text-Format per E-Mail an Sie gesendet werden.

Die Lösung? Erfassen und analysieren Sie diese E-Mails für eine einfache Interaktion, indem Sie sie zu einem Google Sheet hinzufügen. In diesem Artikel erkläre ich, wie genau das geht.

Blatt und Skript

Die Arbeit beginnt mit der Erstellung eines neuen Google Sheets. Ich nenne es "Beispiel für eine Wohltätigkeits-E-Mail".

Beginnen Sie mit einem neuen Google Sheet.

Beginnen Sie mit einem neuen Google Sheet.

Gehen Sie zum Menü „Extras“ im Arbeitsblatt und wählen Sie den Menüpunkt „Skript-Editor“.

Verknüpfen Sie Google-Tabellen mit benutzerdefinierten Skripten über die

Verknüpfen Sie Google-Tabellen mit benutzerdefinierten Skripten über den "Skript-Editor".

Dieser Link öffnet einen neuen Google-Skript-Editor, in dem wir unsere Arbeit erledigen werden. Ich habe dieses Skript „Wohltätigkeits-E-Mail-Beispiel“ genannt. Der Skripteditor ermöglicht es uns, JavaScript-Funktionen zu schreiben, die in unserer Tabelle ausgeführt werden.

Verwenden Sie den Skripteditor, um JavaScript-Funktionen zu schreiben, die in der Tabelle ausgeführt werden.

Verwenden Sie den Skripteditor, um JavaScript-Funktionen zu schreiben, die in der Tabelle ausgeführt werden.

Es gibt zahlreiche Möglichkeiten, ein Skript zu schreiben, um Gmail-Nachrichten abzurufen und sie einer Google-Tabelle hinzuzufügen. In diesem Beispiel verwende ich vier Funktionen: aufÖffnen, sammeln, GetGmailund parseE-Mail.

aufÖffnen

Der aufÖffnen Funktion ist in Google Apps Scripts einzigartig. Es wird immer ausgeführt, wenn ein Blatt geöffnet wird. Der Name muss also lauten aufÖffnen. Sie können jedoch so ziemlich alles tun, was Sie wollen. In unserem Fall fügen wir dem Arbeitsblatt ein neues Menü und einen neuen Menüpunkt hinzu.

Funktion onOpen() { const Spreadsheet = SpreadsheetApp.getActive(); let menuItems = [ {name: 'E-Mails sammeln', functionName: 'sammeln'}, ]; Spreadsheet.addMenu('Wohltätigkeit', menuItems); }

Diese Funktion besteht aus drei Teilen.

Zuerst verwenden wir die Tabellenkalkulations-App -Klasse, um das aktive Blatt abzurufen, dh das Blatt, das der Benutzer betrachtet. Dieses Sheet-Objekt wird der JavaScript-Konstanten „Spreadsheet“ zugewiesen.

const Spreadsheet = SpreadsheetApp.getActive();

Als nächstes erstelle ich ein Array von Menüpunkten. In diesem Beispiel hat unser Array nur einen Menüpunkt, aber es könnten mehr sein. Wenn Sie es auf diese Weise schreiben, können Sie bei Bedarf einfacher Menüelemente hinzufügen.

Beachten Sie, dass Funktionsname beschreibt die Rückruffunktion, die ausgeführt wird, wenn ein Benutzer auf den Menüpunkt „E-Mails sammeln“ klickt. In diesem Fall rufe ich eine Funktion namens . auf sammeln.

let menuItems = [ {name: 'E-Mails sammeln', functionName: 'sammeln'}, ];

Die Dokumentation von Google beschreibt detailliert, wie Sie ein Menü hinzufügen. Für unsere Zwecke müssen Sie nur die Menü hinzufügen -Methode — übergeben Sie sie erstens an den Namen des Menüs und zweitens an das Array von Menüelementen.

Spreadsheet.addMenu('Wohltätigkeit', menuItems);

Im Skripteditor können wir diese Funktion ausführen, indem wir auf die Schaltfläche Ausführen klicken, das schwarze Dreieck, das wie eine Wiedergabeschaltfläche für ein Video aussieht. Alternativ könnten wir die Tabelle aktualisieren, aber das würde den Skript-Editor schließen. Wenn es geschlossen wird, können wir es über das Menü Extras erneut öffnen.

Mit der Schaltfläche Ausführen können wir eine ausgewählte Funktion innerhalb des Skripteditors ausführen.

Mit der Schaltfläche Ausführen können wir eine ausgewählte Funktion innerhalb des Skripteditors ausführen.

Wenn Sie die App zum ersten Mal ausführen, müssen Sie ihr die Berechtigung für den Zugriff auf Ihr Google-Konto erteilen.

Gewähren Sie dem Skript Zugriff auf Ihr Google-Konto.

Gewähren Sie dem Skript Zugriff auf Ihr Google-Konto.

Nachdem diese Funktion ausgeführt wurde, wechseln wir zu einem neuen Menü und Menüelement in der Wohltätigkeitstabelle.

Ein neues Menü und ein neues Menüelement werden in der Tabelle angezeigt.

Ein neues Menü und ein neues Menüelement werden in der Tabelle angezeigt.

sammeln

Als nächstes schreiben wir die sammeln Funktion.

Hier sollte der Name logisch sein. „Gather“ vermittelt für mich die Idee des Sammelns und Organisierens. Sie können die Funktion jedoch beliebig benennen.

Funktion sammeln () { Nachrichten lassen = getGmail (); let curSheet = SpreadsheetApp.getActive(); Nachrichten.forEach(Nachricht => {curSheet.appendRow(parseEmail(Nachricht))}); }

Die Funktion erledigt drei Aufgaben.

Zuerst ruft es alle E-Mail-Nachrichten für Wohltätigkeitsorganisationen ab, indem es die GetGmail Funktion, die ich als nächstes schreiben werde.

lass Nachrichten = getGmail();

Als nächstes verwendet es die Tabellenkalkulations-App -Klasse, um das aktive Blatt zu erhalten.

lassen curSheet = SpreadsheetApp.getActive ();

Schließlich iteriert die Funktion über alle Nachrichten und fügt den gewünschten Inhalt von jeder zur Tabelle hinzu, nachdem sie an die . gesendet wurde parseE-Mail Funktion, die wir noch schreiben müssen.

Nachrichten.forEach(Nachricht => {curSheet.appendRow(parseEmail(Nachricht))});

In diesem letzten Schritt passiert viel, also lassen Sie uns es überprüfen.

Für jeden Nachricht in Nachrichten, die Funktion ruft das aktuelle Blatt ab, curSheet.

Es verwendet dann Googles appendRow -Methode, um dem Blatt eine Zeile hinzuzufügen. Diese Methode benötigt normalerweise ein Array-Objekt. Aber in diesem Fall liefern wir das Ergebnis einer anderen Funktion, parseE-Mail, die wiederum das erforderliche Array bereitstellt.

GetGmail

Der GetGmail Funktion macht die meiste Arbeit.

Zuerst legen wir den Wert einer JavaScript-Konstanten namens „query“ auf einen Gmail-Suchstring fest.

const query = "from:a@e.com AND subject:Charity Beispiel NOT label:done";

Diese Suchzeichenfolge ist genau das, was Sie für die erweiterte Suche in Gmail verwenden würden. Beachten Sie, dass wir die „Von“-Adresse und den „Betreff“ der E-Mail angeben. Wir stellen außerdem sicher, dass die E-Mail-Nachricht nicht das Etikett „Fertig“ enthält.

Die Suchabfragezeichenfolge ist identisch mit einer erweiterten Suche in Gmail.

Die Suchabfragezeichenfolge ist identisch mit einer erweiterten Suche in Gmail.

Als nächstes verwenden wir Googles GmailApp -Klasse, um eine Suche im Posteingang des Benutzers auszuführen. Das Ergebnis dieser Suche sind alle Threads der Wohltätigkeitsorganisation mit dem richtigen Betreff.

lassen threads = GmailApp.search (query);

Wenn Ihr Gmail-Konto viele Nachrichten enthält, können Sie Stapel von zehn abrufen. Dadurch wird das Skript beschleunigt.

lassen threads = GmailApp.search (Abfrage, 0,10);

Die nächsten beiden Zeilen der Funktion verhindern, dass eine E-Mail zweimal zu unserer Tabelle hinzugefügt wird.

Denken Sie daran, dass wir in der Suchanfrage Nachrichten mit dem Label "fertig" ausgeschlossen haben. Jetzt fügen wir den Nachrichten, die wir gerade abgerufen haben, das Label "fertig" hinzu. Wenn das Skript das nächste Mal ausgeführt wird, ignoriert es diese Nachrichten.

Die erste Zeile verwendet Googles getUserLabelByName Methode, um das Label "done" zu finden und es der Variablen "label" zuzuweisen. Wenn dieses Label im Gmail-Konto des Nutzers noch nicht vorhanden ist, wird es in der nächsten Zeile erstellt.

let label = GmailApp.getUserLabelByName("done"); if (!label) {label = GmailApp.createLabel("done")}

Der letzte Abschnitt dieser Funktion sammelt jede E-Mail-Nachricht, fügt sie dem Array „messages“ hinzu und kennzeichnet sie als „erledigt“.

threads.forEach(thread => {messages.push(thread.getMessages()[0].getPlainBody()); label.addToThread(thread); });

Schließlich gibt die Funktion das Array der Nachrichten zurück.

Rückmeldungen;

Was folgt ist das fertige GetGmail Funktion.

Funktion getGmail() { const query = "from:roggio@yahoo.com UND Betreff:Charity Beispiel NICHT label:done"; let threads = GmailApp.search(query); let label = GmailApp.getUserLabelByName("done"); if (!label) {label = GmailApp.createLabel("done")} let Nachrichten = []; threads.forEach(thread => {messages.push(thread.getMessages()[0].getPlainBody()); label.addToThread(thread); }); Rückmeldungen; }

parseE-Mail

Die letzte Funktion "parsiert" die E-Mail-Nachricht und formatiert sie so, dass sie in unsere Tabelle passt.

Diese Funktion muss für das Nur-Text-Format der Nachricht spezifisch sein. Schauen wir uns also an, was uns die Website der Wohltätigkeitsorganisation sendet.

Datum: Do, 16. April 2020 Vorname: Olga Nachname: Razcok E-Mail: oraxcok@example.com Telefon: 202-456-1111 IP: 35.138.107.243 Kommentar: Ich würde gerne an diesem Programm teilnehmen. fav_color: braun

Ich werde reguläre JavaScript-Ausdrücke anwenden, um diese Nachrichtenkopie zu bereinigen und zu formatieren. Ich verwende Regex Pal, ein Werkzeug für reguläre Ausdrücke, um zu bestimmen, welche Ausdrücke das tun würden, was ich brauche.

Mit Regex Pal können Sie sehen, mit welchen Textteilen ein bestimmter regulärer Ausdruck übereinstimmt.

Mit Regex Pal können Sie sehen, mit welchen Textteilen ein bestimmter regulärer Ausdruck übereinstimmt.

Ich werde später Kommas verwenden, um Elemente in der Liste zu trennen. Daher werde ich die Kommas im Datum entfernen, um Verwechslungen zu vermeiden.

Datum: Do, April 16, 2020

Dieser reguläre Ausdruck ersetzt die Kommas durch eine leere Zeichenfolge, die praktisch nichts ist.

lass parsen = Nachricht.ersetzen(/,/g,'')

In diesem Fall ist „Nachricht“ die Nachricht, die an den parseE-Mail Funktion von der sammeln Funktion, die ich vorhin geschrieben habe.

Der nächste reguläre Ausdruck ist leistungsstark, da er die meisten Newline-Zeichen (n) aus unserer Nur-Text-E-Mail-Nachricht entfernt und alle vorherigen Zeichen, einschließlich Doppelpunkte, löscht.

Als Beispiel wird "vorname: Olga" in ", Olga" umgewandelt (ja, das ist ein Komma, ein Leerzeichen und das Wort "Olga").

let parsed = message.replace(/,/g,'')
    .ersetzen(/n*.+:/g,',')

Der vorherige Schritt hinterlässt ein unerwünschtes Komma vor dem Datum. Also der nächste ersetzen Anweisung entfernt es.

let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',')
    .ersetzen(/^,/,'')

Es gibt noch ein paar verbleibende Newline-Zeichen. Diese nächste Anweisung entfernt sie.

let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'')
    .ersetzen(/n/g,'')

Wir haben jetzt eine durch Kommas getrennte Zeichenfolge, die wie folgt aussieht:

Do 16. April 2020, Olga, Razcok, oraxcok@...

Wir können dies mit JavaScript in ein Array umwandeln gespalten Methode.

let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'') .replace(/n/g, '').Teilt(',');

Jetzt ist unsere E-Mail-Nachricht, wenn Sie so wollen, als Array unterteilt.

["Do 16. April 2020", "Olga", "Razcok", "oraxcok@..."]

Du könntest jetzt fast aufhören. Fügen Sie eine einfache return-Anweisung hinzu, und das Skript würde funktionieren.

Rückmeldung;

Es gibt jedoch noch eine weitere Verbesserung, die wir vornehmen können. Die E-Mail-Nachricht enthält Informationen, die wir nicht benötigen, z. B. die Internet Protocol (IP)-Adresse des Absenders und seine Lieblingsfarbe.

IP: 35.138.107.243
fav_color: braun

Wir können diese aus unserem Array entfernen mit Karte, die JavaScript-Array-Methode. Hier das Ergebnis der Karte method wird der Variablen „result“ zugewiesen.

let result = [0,1,2,3,4,6].map(index => parsed[index]);

Diese Linie ist dicht, also nehmen wir sie Stück für Stück. Zuerst haben wir ein Array von Zahlen.

[0,1,2,3,4,6]

Die Zahlen in diesem Array repräsentieren Positionen in der Nachricht Array. Denken Sie daran, dass Arrays nullbasiert sind. Wenn Sie die Positionen in einem Array zählen, beginnen Sie bei Null.

  • Datum — Position 0
  • Vorname — Position 1
  • Nachname — Position 2
  • E-Mail — Position 3
  • Telefon — Position 4
  • IP — Position 5
  • Kommentar — Position 6
  • Lieblingsfarbe — Position 7

Der Karte -Methode nimmt jede Zahl im Array und weist sie dem „index“-Wert zu, wodurch ein neues Array abzüglich der unerwünschten IP-Adresse und der bevorzugten Farbdaten erstellt wird.

[0,1,2,3,4,6] .map (Index => geparst[Index]);

Hier ist das fertige parseE-Mail Funktion aussieht.

function parseEmail(message){ let parsed = message.replace(/,/g,'') .replace(/n*.+:/g,',') .replace(/^,/,'') .replace (/n/g,'') .split(','); let result = [0,1,2,3,4,6].map(index => parsed[index]); Ergebnis zurückgeben; }

Testen Sie es

Angenommen, die Wohltätigkeitsorganisation hat eine Nur-Text-E-Mail mit dem gleichen Format wie oben gesendet, wenn Sie auf den Menüpunkt „E-Mails sammeln“ klicken, erhalten Sie eine neue Zeile.

Das Skript hat der Tabelle eine Zeile hinzugefügt. Es wird eine Zeile für jede E-Mail hinzugefügt, die die Wohltätigkeitsorganisation sendet, wenn auf den Menüpunkt „E-Mails sammeln“ geklickt wird.

Verwandte Artikel

0 Kommentare
Inline-Feedbacks
Alle Kommentare anzeigen
Nach oben-Taste