2013-04-14 10 views
9

Gmailは特定の送信者からのメールを自動的に削除するスクリプトを作成しようとしています。 30日間ゴミ箱への電子メール。私の状況では、この送信者から電子メールが送信されたことがわかっていないことが重要です。Google Apps Script - Gmail、特定のラベルのゴミ箱に永久に電子メールを削除する

私の現在のスクリプトは次のようになります。

function deleteForever(labelName) { 
    var threads = GmailApp.search("in:trash label:" + labelName); 
    for (var i = 0; i < threads.length; i++) { 
     threads[i].moveToTrash(); // Where I would need a delete forever trigger 
    } 
}; 

しかし、私はGmailThreadを使用するには、この目的のための機能が存在しないと永久に削除する方法を考え出すことができませんでした。私は、JavaScriptを使ってタスクを完了できる方法があるかどうかを見ていましたが、方法を見つけ出すことができませんでした。

受信時にこれらの電子メールを永久に削除するように設定する方法はありますか?

答えて

12

GmailAppを使用して電子メールを永久に削除することはできません。

+0

恐れ入りました。ご確認、ありがとうございます。 – SpeedBurner

+3

正解でしたら、しかし私たちは高度なサービスを持っているので、電子メールを削除することは可能です。 – Edo

+0

江戸そうですが、今すぐGmail Advanced Serviceを使用してメールを永久に、すぐに削除することは可能です。高度なサービスを有効にする方法については、https://developers.google.com/apps-script/guides/services/advancedをご覧ください。 Gmail Advanced Serviceの詳細については、https://developers.google.com/apps-script/advanced/gmailをご覧ください。また、メッセージを削除するコード(Gmail.Users.Messages.remove)についてDaniel Bultasのスクリプトをチェックしてください。 – mattvleming

3

誰かを助けている場合は、高度なサービスを使用して行うことができます。

https://developers.google.com/gmail/api/v1/reference/users/messages/delete

高度なサービスのメソッドは、カランの答え@

Gmail.Users.Messages.remove(userId, id)

+1

これについて知っておいてうれしいですが、元の質問でそのメソッドを使用する方法を説明していない限り、これは答えよりもコメントです。どの行を追加/変更する必要がありますか?例えば、ループ内の行を 'Gmail.Users.Messages.remove(me、threads [i] .getId()); –

9

ですでにそれは、私のために働いたソリューションを指しますが、経験の浅い/ - プロではない、開発者であること私はそれを元の質問に対する実際の解決策に変換するために少し仕事を取った。ここで私は、このタスクを実行するために使用されるステップの簡潔な説明があります:

  1. 私のスクリプトに次の関数を作成します。

    function deleteForever(userId, labelName) { 
        var threads = GmailApp.search("in:trash label:" + labelName); 
        for (var i = 0; i < threads.length; i++) { 
        Gmail.Users.Messages.remove(userId, threads[i].getId()); 
        } 
    } 
    
  2. をこのスクリプトの高度なサービスを有効にするには、メニューのResourcesを見つけます、選択してAdvanced Google services...

  3. を有効にしてください。Gmail APIを有効にしてください。

  4. OKを選択する前に、Google Developers Consoleリンクをクリックしてください。 gmailを検索し、サービスも有効にします。

  5. 完了、選択OK;関数は現在動作するはずです。 (コメント:the link @karan providedで述べたように、1は、ユーザIDのため"me"を使用するか、あるいは自分のGmailアドレスを提供することができます。"<address>@gmail.com")を

(Googleのガイドhereに基づいている私のスクリプトのための先進的なサービスを有効にする手順を。)

+0

**上記の手順を実行するには、[ここにリンクがあります](https://www.google.com/script/start/)**からGoogle Appスクリプトをダウンロードしてください。そのリンクをクリックし、 'Start Scripting'ボタンをクリックするだけで簡単に手順を実行することができます。 –

+0

@Bryce Larson 'Messages'を' Threads'に変更することを提案したことが分かりました。あなたはその方法でスクリプトをテストしましたか?もしそうなら、あなたはそれを行う利点についてコメントすることができます、私は受け入れることを嬉しく思います。 (FWIWは、私のために働いています。それは、今年の執筆状況です。) –

2

このスクリプトはGoogle Apps Scriptで使用できます。接続してサービスを認証するだけです。

function myFunction() { 

    var labelName = "deleteForever" 

    var threads = GmailApp.search("in:trash label:" + labelName); 
    for (var i = 0; i < threads.length; i++) { 
    Gmail.Users.Messages.remove('me', threads[i].getId()); 
    } 
} 
+0

これを一括して行う方法は? –

関連する問題