2017-02-25 105 views
0

持って他人高度なGmailのサービスコールGmail.Users.Messages.remove(私、ID) - Not Foundエラー

`Gmail.Users.Messages.remove(me, id)` 

が今エラーを与えていることがわかりましたか?誰にも修正がありますか?

私は数時間おきにスパムとゴミ箱を削除した信頼できるスクリプトを用意しました。 2月21日頃から、有効なスレッドIDが渡されたときでも、「見つかりません」というエラーが表示されます。

これはスクリプトです。いくつかのロギングメッセージを追加しました

function deleteForever() { 
    var threads = GmailApp.getSpamThreads(0, 100); 
    var me = Session.getActiveUser().getEmail(); 
    for (var i = threads.length -1; i >=0; i--) { 
    var thisid=threads[i].getId(); 
     Logger.log("Removing thread " +i + ' of ' + threads.length + " from Spam with ID = " + thisid); 

    try { 
    var thisthread=GmailApp.getThreadById(thisid); 
    Logger.log("Found the thread."); 
    Gmail.Users.Messages.remove(me, thisid); 
    }catch(err) { 
    Logger.log("Error " + err.message); 
    }; 

    } 
    Logger.log("Finished removing " + threads.length + " threads from Spam."); 

    var threads = GmailApp.getTrashThreads(0, 100); 
    for (var i = threads.length -1; i >=0; i--) { 
     Logger.log("Removing thread " +i + ' of ' + threads.length + " from Trash"); 
    try { 
    Gmail.Users.Messages.remove(me, threads[i].getId()); 
    } catch(err) { 
    Logger.log("Error " + err.message); 
    }; 
    } 
    Logger.log("Finished removing " + threads.length + " threads from Trash."); 
} 

これで、Not Foundエラーが表示されます。

[17-02-25 11:45:49:790 GMT] Removing thread 17 of 18 from Spam with ID = 15a6fe6c1a86a020 
[17-02-25 11:45:49:829 GMT] Found the thread. 
[17-02-25 11:45:49:959 GMT] Error Not Found 
[17-02-25 11:45:49:959 GMT] Removing thread 16 of 18 from Spam with ID = 15a6fe6c168f4a03 
[17-02-25 11:45:50:000 GMT] Found the thread. 
[17-02-25 11:45:50:129 GMT] Error Not Found 
[17-02-25 11:45:50:130 GMT] Removing thread 15 of 18 from Spam with ID = 15a6fed29f6650b3 
[17-02-25 11:45:50:165 GMT] Found the thread. 
[17-02-25 11:45:50:294 GMT] Error Not Found 
..... 
    ` 

削除操作を試行する前にthisidが有効なIDに設定されていることに注意してください。

答えて

3

検索機能がスレッドをフェッチしている間にメッセージを削除しています。それがあった代わりに

Gmail.Users.Messages.remove("me", threadId); 
+0

はいの

使用

Gmail.Users.Threads.remove("me", threadId) 

。おそらくスレッドにメッセージが1つしかない場合、これはうまくいきました。スパムやごみ箱にスレッドが含まれていたケースはほとんどありませんでしたが、そこにあったものは削除されませんでした。 –

+0

問題が解決した場合は、最善の回答を選択してこの質問を閉じてください。 –