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.
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.
01 | function extractDataFromEmail() { |
02 | var sheet = SpreadsheetApp.getActiveSheet(); |
03 | var label = GmailApp.getUserLabelByName( "MijnLabel" ); |
06 | var threads = label.getThreads(); |
08 | for ( var i = 0; i < threads.length; i++) { |
09 | var messages = threads[i].getMessages(); |
10 | for ( var j = 0; j < messages.length; j++) { |
11 | var message = messages[j]; |
12 | var htmlBody = message.getBody(); |
14 | var naamValue = extractValueFromHtml(htmlBody, "Locatie" ); |
16 | sheet.getRange( "A1" ).setValue(naamValue); |
21 | Logger.log( "Label niet gevonden" ); |
25 | function extractValueFromHtml(html, label) { |
26 | var lines = html.split( '\n' ); |
27 | var extractingValue = false ; |
29 | for ( var k = 0; k < lines.length; k++) { |
30 | if (lines[k].indexOf( '<p><b>' + label + '</b>' ) !== -1) { |
31 | extractingValue = true ; |
35 | if (extractingValue && lines[k].trim().startsWith( '<p>' )) { |
36 | return lines[k].trim().replace(/<\/?p>/g, '' ); |
Vooralsnog werkt dit script voor één enkele e-mail, voor de toekomst zal dit artikel wellicht worden aangepast voor bulk-verwerking.