2016-04-02 12 views
1

Bu Gmail.Users.Messages.remove (userId, id) nasıl çalışır? E-postanın kimliği nedir ve bir e-postayı kalıcı olarak silmek doğru işlev midir?E-postalarımı Google Script ile silme komut dosyası

Benim durumumda gönderilen tüm e-postalarımı anında ve kesinlikle silmek istiyorum. İşte birinden aldı bazı kod yalnızca farklı bir etikete sahip bulunuyor: lütfen

function myFunction() { 
    var threads = GmailApp.search("in:sent label:Inbox"); 
    var me = Session.getActiveUser().getEmail(); 
    for (var i = 0; i < threads.length; i++) { 
     Gmail.Users.Messages.remove(me, threads[i]); 
    } 

} 

zaten doğru bu midir ve herkes bana yardımcı olabilir?

Düzenleme: Benim kod değiştirilmiş ama hala çalışmıyor, ben hala burada bu, fonksiyon kaldır nasıl kullanılacağını bilemiyorum: kodunun çalıştığını

function myFunction() { 

    var me = Session.getActiveUser().getEmail(); 
    var thread = Gmail.Users.Threads.list(me); 
    for (var i = 0; i < 1000; i++) { 
     Gmail.Users.Threads.remove(me, thread); 
     thread = Gmail.Users.Threads.list(me).nextPageToken; 

    } 

} 

keresinde koyacağım Her dakika işlevi çalıştırmak için bir tetikleyici. Böylece Gönderdiğim klasörüm her zaman boş.

Herhangi bir öneriniz lütfen? Benim tarafta

cevap

0

Ben

(.. ne beklediğiniz değil belki bu çöp Katılıyorum) bu

thread.moveToTrash(); 

kullanıyordum Doc google (tr): https://developers.google.com/apps-script/reference/gmail/gmail-thread#movetotrash

Mesaj (fr) : http://curiositedevie.blogspot.be/2015/08/gmail-gestion-de-vos-emails-aux-petits.html?m=1

Tam örnek komut dosyası (tr): https://github.com/boly38/script.google.com/blob/master/organizeEmail.gs


DÜZENLEME: İşte altında numunede gibi kalıcı bir iş parçacığı

Kullanım Gmail.Users.Threads.remove(mymail, thread.id); kaldırmak için bir çözümdür.

  • Güncelleme (eğer ilgili izinler sorulacaktır ilk çalıştırılması sırasında) gmail adresi: örneği kullanmak için nasıl

    .
  • permanentlyRemoveMyLabel = false'u kullanarak ilk kez oynamak kesinlikle önerilir. Bu örnekte, bu örnek iletiyi label:mytest ile birlikte görüntüler ve (tutar) permanentlyRemoveMyLabel'u true olarak ayarlayın. Bu durumda, bu örnek görüntülenecek ve mesajını label:mytest ile kalıcı olarak kaldırın. https://script.google.com/ için

Örnek:

function removeMyTest() { 
    var mymail = "[email protected]"; 
    var mylabel = "mytest"; 
    var permanentlyRemoveMyLabel = false; 
    var pageToken; 
    do { 
    var threadList = Gmail.Users.Threads.list('me', { 
     q: 'label:' + mylabel, 
     pageToken: pageToken 
    }); 
    if (threadList.threads && threadList.threads.length > 0) { 
     threadList.threads.forEach(function(thread) { 
     Logger.log('id: %s snippet: %s', thread.id, thread.snippet); 
     if (permanentlyRemoveMyLabel) { 
      Gmail.Users.Threads.remove(mymail, thread.id); 
      Logger.log('id: %s snippet: %s REMOVED', thread.id, thread.snippet); 
     } 
     }); 
    } 
    pageToken = threadList.nextPageToken; 
    } while (pageToken); 
} 
+0

Cevabınız için teşekkürler, Gmail Api'yi kullanarak Gelişmiş Google Hizmetleri'ni kullanarak bir e-postayı çöp kutusuna götürmeden bir e-postayı kesinlikle silebileceğinizi okudum. İşte konu https://developers.google.com/gmail/api/v1/reference/users/messages/delete. Sadece nasıl kullanacağımı anlamadım, programlama becerilerimin çok iyi olduğunu söylemeliyim, ama hala öğreniyorum. –

+0

Sanırım bu v1 "delete (...)" ReST API'sı, herhangi bir 'apps-script' yöntemi tarafından sarılmıyor çünkü [apps-script/reference] dosyasına silme yöntemi yok (https://developers.google.com/apps-script/reference /), ve hatta çöp boşaltmak için hiçbir yolu .. :( – boly38

+0

tam olarak, ama bir yolu olmalı, çünkü bu linkte verilen script: https://developers.google.com/gmail/api/v1/reference/users/messages/delete düzgün bir kimlik verildiyse mükemmel çalışır.Tüm bilmem gereken şey bir e-postanın kimliğini nasıl alacağım, böylece fonksiyonumu düzgün bir şekilde çalıştırabilirim –

0

Ben docs bazı kazma yaptık. İstediğiniz sonuçla, aradığınız şeyin User.messages.delete olduğunu düşünüyorum. dokümanlarında belirtildiği gibi:

hemen ve kalıcı Belirtilen mesajı siler. Bu işlem geri alınamaz.

Gmail.Users.Messages.remove() gereğince, Ben bu konuda emin değilim, ama bence onun eski bir uygulama ki, cemiyetin etrafına baktı ve kalıcı bir e-posta/mesaj silme parçacık olarak sunmak bu answer bulundu çünkü . Şu anki doktorların söylediklerine sadık kalırım.

Bu yardımcı olur umarım. İyi şanslar. :)

+0

için gelişmiş google hizmetleri (kaynaklar altında ve konsol api altında) etkinleştirmeniz gerekir https://script.google içinde User.messages.delete bu komutu fint olamaz .com, web sürümü üzerinde çalışıyorum. ettik(). –

0

Bu, gönderilen iletilerdeki tüm konuşmaları kaldıracaktır. NB Birisi size bir mesaj yolladıysa ve siz buna aynı görüşmenin bir parçası olarak cevap verdiyseniz, gelen mesajın da silineceğini düşünüyorum. Bu istediğin şey olmayabilir.

function DeleteByLabel() { 

    var label="sent" 
    var threads = GmailApp.search("in:" +label); 
    var me = Session.getActiveUser().getEmail(); 
    Logger.log("Found " + threads.length + " threads with label " + label); 

    for (var i = threads.length -1; i >=0; i--) { 
    var thisid=threads[i].getId(); 
    Logger.log("Removing thread " +i + ' of ' + threads.length + " from " + label + " with ID = " + thisid); 

    try { 
     Gmail.Users.Threads.remove(me, thisid); 
    } 
    catch(err) { 
    Logger.log("Error " + err.message + " when removing thread with ID " +thisid); 
    }; 
} 

} 

benim "Taslaklar" klasöründe denedim ve Tamam o kurtulmuştur.

NB Çalıştırırken uygun bir Gmail API'sini etkinleştirmeniz gerekir.

İlgili konular