0

Ich habe ein Skript, das Daten aus einem Google Mail-Konto herausholt. Das Skript scannt den Posteingang nach Mails und findet die relevanten Textzeilen und legt sie in einem Google-Blatt ab.Google App Script zum Synchronisieren des Google Mail-Posteingangs mit Blättern

Die Email sieht so etwas wie:

Fahrzeug: 5.761.364, Position: (URL zu Google Maps)

Das Skript i verwenden, um die Daten zu Blättern zu erhalten:

function processInboxToSheet() { 
    var start = 0; 
    var threads = GmailApp.getInboxThreads(start, 100); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var result = []; 

    for (var i = 0; i < threads.length; i++) { 
    var messages = threads[i].getMessages(); 

    var content = messages[0].getPlainBody(); 

    if (content) { 
     var tmp; 
     tmp = content.match(/Vehicle:\s*([A-Za-z0-9\s]+)(\r?\n)/); 
     var username = (tmp && tmp[1]) ? tmp[1].trim() : 'No vehicle'; 

     tmp = content.match(/Map Link:\s*([A-Za-z ][[email protected]#$%?=^.,:&*/ ]+)/); 
     var comment = (tmp && tmp[1]) ? tmp[1] : 'No url'; 

     sheet.appendRow([username, comment]); 

     Utilities.sleep(500); 
    } 
    } 
}; 

Would Es ist möglich, eine Art Synchronisierungsfunktion einzurichten, bei der das Google-Blatt automatisch mit den E-Mails im Posteingang aktualisiert wird. Im Moment macht es jedes Mal Duplikate, wenn es läuft.

Kann mir auch jemand sagen, ob es möglich ist, das Skript zu veranlassen, die erstellten Zeilen zu löschen, wenn die E-Mail gelöscht wird. Also ist die Blattliste immer mit dem Posteingang synchronisiert?

Bitte fragen Sie mich, ob es keinen Sinn ergibt.

Antwort

0

Sie könnten Ihr Skript von einer timebased trigger ausführen und wenn Sie nur das gesamte Blatt jedes Mal neu schreiben dann würde das kümmern sich um die Beseitigung der Einträge aus gelöschten E-Mails. Wenn Sie das empfangene Datum zur Tabelle hinzufügen könnten, könnten Sie sie nach Datum bestellen.

Verwandte Themen