In dit artikel komt aan de orde hoe een Google Sheet automatisch kan worden samengevoegd met informatie uit een Gmail via Apps Script.
Een voorwaarde is dat de e-mail de onderstaande HTML-tabel structuur kent: meerdere rijen en twee kolommen.
<table>
<tr>
<td width="25%">
<p><b>Locatie</b>
</p>
</td>
<td>
<p>Amsterdam
</p>
</td>
</tr>
</table>
Het onderstaande script scant alle e-mails die gelabeld zijn met "MijnLabel" en zoekt - in dit voorbeeld - de Locatie in de tabel en plaatst het bijbehorende resultaat (Amsterdam) in cel A1.
function extractDataFromEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var label = GmailApp.getUserLabelByName("MijnLabel");
if (label) {
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
var htmlBody = message.getBody();
var naamValue = extractValueFromHtml(htmlBody, "Locatie");
if (naamValue) {
sheet.getRange("A1").setValue(naamValue);
}
}
}
} else {
Logger.log("Label niet gevonden");
}
}
function extractValueFromHtml(html, label) {
var lines = html.split('\n');
var extractingValue = false;
for (var k = 0; k < lines.length; k++) {
if (lines[k].indexOf('<p><b>' + label + '</b>') !== -1) {
extractingValue = true;
continue;
}
if (extractingValue && lines[k].trim().startsWith('<p>')) {
return lines[k].trim().replace(/<\/?p>/g, '');
}
}
return null;
}
Vooralsnog werkt dit script voor één enkele e-mail, voor de toekomst zal dit artikel wellicht worden aangepast voor bulk-verwerking.
