![](/img/trans.png)
[英]Google Apps Scripts - Extract data from gmail into a spreadsheet
[英]Extracting data from gmail into a spreadsheet using Google Apps scripts
案例:我通过 email 收到有关个人安全系统评估工作的通知。 这就是它们的样子(由于隐私法,我把一些部分涂黑了)在这里输入图片描述
我想通过 Google Apps 脚本(javascript 语言)从这个 email 中提取一些信息到 google 表格
到目前为止,我只能使用以下代码将日期从 email 提取到 Google 表格中:
function onOpen(e){
ui.createMenu("Tessa").addItem("Get Emails by Label", "getGmailEmails").addToUi(); //create button in google sheets, which will be used to add information from incoming emails to Google sheets.
}
function getGmailEmails(){
var label = GmailApp.getUserLabelByName("tobeprocessed"); //get emails with label 'tobeprocessed' (could also be another name).
var threads = label.getThreads();
for(var i = threads.length - 1; i >=0; i--){
var messages = threads[i].getMessages();
for (var j = 0; j <messages.length; j++){
var message = messages[j];
if (message.isUnread()){
extractDetails(message);
GmailApp.markMessageRead(message);
}
}
threads[i].removeLabel(label); //delete label after processing the message, so that it won't be added twice (or more if you press the button again)
}
}
function extractDetails(message){
var emailData = {
Locatie: "Null",
Score: "Null",
Datum: "Null",
Opmerking: "Null",
}
var emailKeywords = {
Locatie: "",
Score: " ",
Opmerking: "",
}
emailData.Datum = message.getDate();
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var emailDataArr = [];
for(var propName in emailData){
emailDataArr.push(emailData[propName]);
}
activeSheet.appendRow(emailDataArr);
有人可以帮我解决这个问题吗? 提前致谢!
您可以使用getPlainBody()获取 email 正文中的消息,它返回包含正文内容的字符串。
在那之后,一种检索身体碎片的方法是使用正则表达式:
function extractDetails(message){
var emailData = {
Locatie: "Null",
Score: "Null",
Datum: "Null",
Opmerking: "Null",
}
emailData.Datum = message.getDate();
// Get the email's body
var body = message.getPlainBody();
//var body = 'Reno Vught van Heikant heeft een MIRS-melding gemaakt waarin het functioneren van het persoonsbeveiliging systeem werd beoordeeld met een 3.Toelichting melder: gaf locatie woonkamer aan terwijl ik bijna op de boerderij was. ik kwam vanuit de woonkamer rennen.Beschrijving incident: bij binnenkomst gebeurde er dit. en toen dit';
// Retrieves everything between "van " and " heeft"
var locatieRegex = /van (.*?) heeft/s;
var match = body.match(locatieRegex);
if (match.length > 1) {
emailData.Locatie = match[1];
}
// Retrieves everything between "met een " and a period (.)
var scoreRegex = /met een (.*?)\./s;
match = body.match(scoreRegex);
if (match.length > 1) {
emailData.Score = match[1];
}
// Retrieves everything between "Toelichting melder: " and "Beschrijving incident:"
var opmerkingRegex = /Toelichting melder: (.*?)Beschrijving incident:/s;
match = body.match(opmerkingRegex);
if (match.length > 1) {
emailData.Opmerking = match[1];
}
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var emailDataArr = [];
for(var propName in emailData){
emailDataArr.push(emailData[propName]);
}
activeSheet.appendRow(emailDataArr);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.