Ich verwende dieses Google Apps-Skript zum Extrahieren und Parsen von Datenfeldern aus dem Nachrichtentext von Google Mail-Nachrichten. Ich habe das Skript so geändert, dass es für die Felder funktioniert, die ich in meinen E-Mails habe. Ich habe jedoch festgestellt, dass es nur funktioniert, wenn E-Mails unterschiedliche Betreffzeilen haben. Wenn ich zum Beispiel fünf E-Mails mit unterschiedlichen Betreffzeilen habe, erstellt das Skript fünf Zeilen in einer Google-Tabelle, eine für jede E-Mail. Aber wenn ich 5 E-Mails alle mit der gleichen Betreffzeile habe, bekomme ich nur eine Zeile für die älteste E-Mail im Posteingang. Weiß jemand, wie ich dieses Skript modifizieren kann, damit die Betreffzeile für alle E-Mails gleich sein kann? Vielen Dank!Google Apps-Skript - Analysieren von Daten aus Google Mail-Text mit identischer Betreffzeile
/* Based on https://gist.github.com/Ferrari/9678772 */
function parseEmailMessages(start) {
start = start || 0;
var threads = GmailApp.getInboxThreads(start, 100);
var sheet = SpreadsheetApp.getActiveSheet();
for (var i = 0; i < threads.length; i++) {
// Get the first email message of a threads
var tmp,
message = threads[i].getMessages()[0],
subject = message.getSubject(),
content = message.getPlainBody();
// Get the plain text body of the email message
// You may also use getRawContent() for parsing HTML
// Implement Parsing rules using regular expressions
if (content) {
tmp = content.match(/Name:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var username = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/Title:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var title = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/Organization:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var organization = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/City:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var city = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/State:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var state = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/country:\s*([A-Za-z0-9.\s]+)(\r?\n)/);
var country = (tmp && tmp[1]) ? tmp[1].trim() : 'No username';
tmp = content.match(/E-mail:\s*([\s\S]+)/);
var email = (tmp && tmp[1]) ? tmp[1] : 'No comment';
sheet.appendRow([username, title, organization, city, state, country, email]);
} // End if
} // End for loop
}
Ich bin immer noch nur eine Reihe von Daten zu bekommen. – dlc3172
Sehr seltsam! Ich habe sowohl Ihren Code und mein Update als Test ausgeführt, um eine unterschiedliche Anzahl von Zeilen für jede Implementierung zu erhalten. Werden Ihre E-Mails mit demselben Betreff als Threads angezeigt? Was sehen Sie, wenn Sie den E-Mail-Betreff zusammen mit Ihrer anderen Ausgabe aufzeichnen? Werden nur die ersten 100 Threads abgerufen, die zu dem beitragen, was Sie sehen? –
Nun, ich habe beschlossen, nur den Code in der PHP-Datei zu ändern, die die Online-Formulardaten verschickt, so dass jede Betreffzeile eindeutig ist (Ich habe die E-Mail-Adresse des Benutzers der Betreffzeile jeder E-Mail hinzugefügt.) Dies löst das Problem und ich bekomme jetzt jede E-Mail in einer eigenen Zeile. Danke für Ihre Hilfe! – dlc3172