2016-09-21 29 views
0

我在菜單中添加了一個功能,以允許用戶單擊「提取電子郵件」 - 將此gmails提取到活動的預格式化電子表格 問題: - 我把提取相同的電子郵件...那麼幾件事情我做Google腳本不會移動到垃圾箱並在提取到表格時包含垃圾郵件

1 - 我的Gmail中有一個過濾器,基於特定主題 1顆星這些電子郵件 2.適用特定的標籤 2-我搜索的是:在提取和循環後出現星標 - 我刪除星 - 我可以刷新我的收件箱,看到星星出現並消失 3 - 如果我運行這個,並且g讓我們說4個電子郵件 - 並立即再次運行 - 腳本運行,它說完成,並沒有新的進來。

然而,一次新的電子郵件進來 - 它明星本身,合併在該線程 - 如果我是再次點擊提取郵件 - 我會在該線程加上新 每封郵件 - 即使是在線程中的其他消息沒有出演

function myFunction() { 

var ss = SpreadsheetApp.getActiveSheet(); 

var label = GmailApp.getUserLabelByName("is:starred TannerWebOppCRM"); 
var threads = label.getThreads(); 

for (var i=0; i<threads.length; i++){ 
var messages = threads[i].getMessages(); 

for (var j=0; j<messages.length; j++) 
{ 
    var msg = messages[j].getBody(); 
    var sub = messages[j].getSubject(); 
    var dat = messages[j].getDate(); 

    ss.appendRow([msg, sub, dat]) 
    GmailApp.unstarMessage(messages[j]); 

} 
    threads[i].removeLabel(label); 
    threads[i].moveToTrash(); 
    } 
} 

我試圖將項目移至垃圾桶 - 但他們AREN不會去的。另外,當我手動將物品移至垃圾箱時 - 仍然通過。

我已經讀了半天的解決方案,似乎不能釘下腳本,只會得到新的消息。

在這種情況下 - 一旦我獲取數據 - 電子郵件可以被清除/存檔/未標記 - 任何東西,一旦加載 - 我將有一個時間總是....意思是如果用戶點擊「獲取電子郵件」在4星期三下午,我可以從這一點開始搜索電子郵件數據...

回答

0

getUserLabelByName()方法檢索給定標籤名稱的標籤。它不能用於執行搜索。而且,無論如何都不需要將線程移動到垃圾箱。

function myFunction() { 

var ss = SpreadsheetApp.getActiveSheet(); 
var threads = GmailApp.search("is:starred in:TannerWebOppCRM"); 

for (var i=0; i<threads.length; i++){ 

    var messages = threads[i].getMessages(); 

    for (var j=0; j<messages.length; j++) { 

    var msg = messages[j].getBody(); 
    var sub = messages[j].getSubject(); 
    var dat = messages[j].getDate(); 

    ss.appendRow([msg, sub, dat]); 

    } 

    threads[i].moveToTrash(); 

} 
} 
+0

我最初添加了unstar。當它仍然拉扯它時 - 我強烈地將這一舉動加入到垃圾中,因爲它仍在從垃圾中拉扯標籤。我會嘗試以上 - 但已經有一個與。搜索運行的版本,仍然給我的問題 - 'var threads = GmailApp.search('is:starred subject:Tanner Web Opp CRM',0,5);' –

+0

我做了一個基本的改變,以獲得簡單的身體。我認爲我的問題是我拷貝了拷貝之後,盯着相同的東西來複制它。我做了所有這些作品的各種編輯! (var j = 0; j