Jakesch:
私は仕事にこれを取得するには、いくつかの異なるスクリプトをつなぎ合わせているが、私は正確にデータを置くためのコードを取得するように見える傾けます。
電子メールの入力:
*Status:*
*Date:* 03/31/2020
*WorkOrder:* 123456-1
*DMSShipDate:* 03/31/2020
*PONumber:* 8675309
*Company:* Test
脚本
var ui = SpreadsheetApp.getUi();
function onOpen(e){
ui.createMenu("Import Email").addItem("Import Email", "getGmailEmails").addToUi();
}
function getGmailEmails(){
if (Session.getActiveUser().getEmail() != "[email protected]"){
Browser.msgBox("Please log in as [email protected]");
return;
}
var label = GmailApp.getUserLabelByName("ImportMe");
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];
extractDetails(message);
GmailApp.markMessageRead(message);
}
threads[i].removeLabel(label);
}
}
function extractDetails(message){
var bodyContents = message.getPlainBody();
var status = bodyContents.match(/\*Status:\*(.*) /);
var dateEntered = bodyContents.match(/\*Date:\*(.*) /);
var workOrder = bodyContents.match(/\*WorkOrder:\*(.*) /);
var dmsShipDate = bodyContents.match(/\*DMSShipDate:\*(.*) /);
var poNum = bodyContents.match(/\*PONumber:\*(.*) /);
var company = bodyContents.match(/\*Company:\*(.*) /);
var activeSheet = SpreadsheetApp.getActiveSheet();
activeSheet.appendRow([status, dateEntered, workOrder, dmsShipDate, poNum, company]);
}
結果:
I get the following in each column:
[Ljava.lang.Object;@488e1851, [Ljava.lang.Object;@5c588720, etc, etc
IこれにはJSON.stringifyとのtoString()を試してみましたが、何も正しく列にデータを取得することができていないようにみえます。
それらアスター:
String.matchを返しますarray
。キャプチャグループを取得するには、その配列のインデックス:
bodyContents.match(/\*Status:\*(.*) /)[1];