2014-02-12 71 views
1

我是新手谷歌腳本。谷歌腳本檢查一列,如果包含某個詞

我創建了一個腳本,Google Spreadsheet應該連接到GMail。一切都很好。

我的問題是,我需要檢查電子郵件內容是否有單詞「ORDER」。如果是的話,它應該得到「ORDER」一詞和它後面的數字。

例如,電子郵件在郵件正文中包含「ORDER 90104」,則Google腳本應將ORDER 90104插入到工作表中的一列中。一個例子電子郵件可能是:

嗨,客戶請求ORDER 90104。謝謝。

這甚至有可能嗎?截至目前,我用getPlainBody(),我可以得到電子郵件的所有內容,並將其放在一列中。我的計劃是檢查該欄並查找單詞ORDER。儘管我找不到解決方案。

這是我工作的代碼獲得第一的三封郵件的郵件內容:

function getGMail() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheets()[0]; 
var threads = GmailApp.getInboxThreads(0,3); 
cell = sheet.getRange("A1"); 

for (var i = 0; i < threads.length; i++) { 
    threadMessage = threads[i].getMessages(); 
    var emailContent = threadMessage[0].getPlainBody(); 
    cell.offset(i,0).setValue(emailContent);  
} 

}

任何意見或建議,將不勝感激。

謝謝!

回答

1

你好theladydevbugger,

當你沒有了大量的代碼我的回答將是很短:是的,你可以做到這一點!
如何:使用正則表達式:/ORDER [0-9]+/g.
如何使用正則表達式:波紋管的樣本代碼

var emailBody = yourMail.getPlainBody(); // supposing "yourMail" is the mail you retrieved 
var isThereAnyOrder = false; 
if(mailBody.search(/ORDER [0-9]+/g)>-1){ 
    isThereAnyOrder=true; 
    var order=mailBody.match(/ORDER [0-9]+/g)>-1)[0]; 
    Logger.log(order); 
    // do something with the order 
    } 
else{ 
    // there is no order do nothing 
} 
+0

OMG太感謝你了,哈羅德!我會試試這個。 :)我會更新你,如果我有它的工作。 – novice

+0

嗨哈羅德,我粘貼我的工作代碼在我的問題上,並嘗試你的答案。替換了一些變量等,但我在這裏得到一個錯誤:var order = mailBody.match(/ ORDER [0-9] +/g)> - 1)[0];它說失蹤「;」。我檢查了你的代碼,它似乎沒有任何缺點。有任何想法嗎?謝謝。 :) – novice

+0

我的壞... var order = mailBody.match(/ ORDER [0-9] +/g)[0];會更好地工作(我已經複製粘貼上面的行而不重新讀取它...)。 「> -1)」在那裏無所事事。 [對不起] – Harold

相關問題