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.