【发布时间】:2021-11-17 15:39:24
【问题描述】:
从Google Apps Script to extract data from Gmail and fill in matching row in Google Sheets 开始,还有另一封电子邮件,其中包含在一封电子邮件中的多个跟踪号。示例...
Your order is ready to be redeemed/ delivered.
Order No. 91401111
Tracking No. (Actual Weight/Chargeable Weight) JK5SD8F4M6 (2.1lb)
J6HDO9L665 (2.1lb)
J3SDG76435 (9.8lb)
Courier UPS
Shipment No. 23879924905
我想提取电子邮件中的数据并填写正确的单元格,例如这样...
目前脚本是这样的……
function extractDetails(message){
var emailData = {
body: "Null",
trackingno: "Null",
weight: "Null",
orderno: "Null",
courier: "Null",
shipmentno: "Null"
}
emailData.body = message.getPlainBody();
emailData.trackingno = emailData.body.match(/(?<=Tracking No. \(Actual Weight/Chargeable Weight\) ).*/).toString().trim();
emailData.weight = emailData.body.match(/????????/).toString().trim();
emailData.orderno = emailData.body.match(/(?<=Order No. ).*/).toString().trim();
emailData.courier = emailData.body.match(/(?<=Courier ).*/).toString().trim();
emailData.shipmentno = emailData.body.match(/(?<=Shipment No. ).*/).toString().trim();
var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = activeSheet.getSheetByName('Sheet1');
var range = sheet.getRange("A2:A" + sheet.getLastRow()).createTextFinder(emailData.trackingno).findNext();
if (range) {
range.offset(0, 3).setValue(emailData.weight);
range.offset(0, 4).setValue(emailData.orderno);
range.offset(0, 5).setValue(emailData.courier);
range.offset(0, 6).setValue(emailData.shipmentno);
} else {
sheet.appendRow([emailData.trackingno, '', '', emailData.weight, emailData.orderno, emailData.courier, emailData.shipmentno]);
}
}
我知道上述脚本中几乎没有错误。首先,我不知道如何编写正则表达式来找到权重。然后,我不知道如何提取所有跟踪号。我可能应该将提取的跟踪号存储在一个数组中,然后使用 for 循环进行匹配。请帮忙。谢谢。
【问题讨论】:
标签: javascript regex google-apps-script google-sheets