簡體   English   中英

Google Apps 腳本根據 email 正文中的關鍵字發送不同的自動回復

[英]Google Apps Script to send different auto-replies based on keyword in email body

基本上我正在嘗試根據 email 正文的內容設置不同的自動回復。 下面是我當前的代碼......在這種情況下,我正在嘗試對其進行設置,以便如果 email 與正文“測試”一起發送,它將自動回復“這是我的測試”。 但如果是其他內容,它會說“抱歉,您的關鍵字未被識別”。 最好希望將來添加多個關鍵字...

但是,無論我發送什么,它都只會自動回復“這是我的測試”......

關於如何解決這個問題的任何想法?

function autoReplier() 
{var labelObj = GmailApp.getUserLabelByName('autoreply');
var gmailThreads;
var messages;
var sender;for (var gg = 0; gg < labelObj.getUnreadCount(); gg++) {
gmailThreads = labelObj.getThreads()[gg];
messages = gmailThreads.getMessages();
for (var ii = 0; ii < messages.length; ii++) 
  {if (messages[ii].isUnread()){msg = messages[ii].getPlainBody();
    if (msg = "test") {
        sender = messages[ii].getFrom();MailApp.sendEmail(sender, "Auto Reply", "This is my test");                                                                     
        messages[ii].markRead();
        messages[ii].moveToTrash();
    } else {
        sender = messages[ii].getFrom();MailApp.sendEmail(sender, "Auto Reply", "Sorry, your keyword was not 
recognized");                                                                         
        messages[ii].markRead();
        messages[ii].moveToTrash();
}
}
}
}
}

說明/問題:

您的代碼有一個明顯的問題,並且需要根據您的評論進行另一項修改:

  • if(msg = "test")替換為if(msg == "test")否則將始終執行第一個if塊語句。

  • 根據您的評論, msg不僅僅是一個單詞,而是一個文本。 並且您想檢查test是否在兩個單詞之間。 假設這些詞是this that您可以使用以下正則表達式來查看test是否介於thisthat之間:

     const regex = RegExp(/(?<=this.*?)test(?=.*?that)/); regex.test(msg) // this returns true if test is between this and that

RegExp.prototype.test()方法允許您驗證您的正則表達式,並在正則表達式和指定字符串(在您的情況下為msg )之間存在匹配時為true

解決方案:

function autoReplier() 
{var labelObj = GmailApp.getUserLabelByName('autoreply');
var gmailThreads;
var messages;
const regex = RegExp(/(?<=this.*?)test(?=.*?that)/); //modify this and that if you want to use other words
var sender;
for (var gg = 0; gg < labelObj.getUnreadCount(); gg++) {
gmailThreads = labelObj.getThreads()[gg];
messages = gmailThreads.getMessages();
for (var ii = 0; ii < messages.length; ii++) 
  {if (messages[ii].isUnread()){msg = messages[ii].getPlainBody();
    if (regex.test(msg)) {
        sender = messages[ii].getFrom();
        MailApp.sendEmail(sender, "Auto Reply", "This is my test");                                                                     
        messages[ii].markRead();
        messages[ii].moveToTrash();
    } else {
        sender = messages[ii].getFrom();
        MailApp.sendEmail(sender, "Auto Reply", "Sorry, your keyword was not recognized");                                                                         
        messages[ii].markRead();
        messages[ii].moveToTrash();
}}}}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM