スプレッドシートのリストを読み取って、gmailを自動削除する方法

「※全文を公開している「投げ銭」スタイルのノートです。」

最近、googleのストレージが圧迫されて困っていませんか?

いらないメールを削除すれば、それが解消されるとはいえ、一々、手作業で選んで、削除するのは時間の無駄ですし、大変です。

「もし、7日前のメールを自動で削除できたら、圧倒的に楽になるのに…」
そう思ったことありますよね。

そこで、今回は、指定したメールアドレスのメールだけを自動削除するための方法を紹介します。

もちろん、7日前ではなく、10日前や30日前など、好きな日付より前にすることも可能です。

最終的にどんな感じになるかというと

下はスプレッドシートの画面なのですが。

上記のようにスプレッドシートにどんどんGmailのラベルを追加してあげれば、それだけで、自動削除できるようになります。

Gmailのラベルというのは下記のサイトのようなものです。


具体的にはどのようにして、ラベルの登録を行うのかというと、自動削除したいメールアドレスのメールを開いて、下の赤枠の三点リーダをクリックしてください。

「メールの自動振り分け」をクリックして、「フィルタを作成」をクリックします。

ラベル名を適当に決めて、下記画像のようにチェックを入れたら「フィルタを作成」をクリックします。

これで終了です。後はこのラベル名をさっきのスプレッドシートに追加すると、自動削除できるという仕組みです。

では、具体的にどのような設定をすれば、ラベル名を貼り付けただけで、7日前以前の指定したラベルの付いたメールを削除することができるのでしょうか。

下記のサイトにアクセスしてください。


画面が開いたら、左側にある「新しいプロジェクト」をクリックします。

下の赤枠の文字を削除します。

すると、下記画像のように何もない画面となります。

ここに以下の文字の羅列(コード)をコピペしてください。

function myFunction() {
  //シートオブジェクトの取得
  var sheetId = 'abcd1234'; //シートIDを入力する
  var sheetName = 'シート1'; //シート名を入力する
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName(sheetName); //変更はしない
 
  //配列へシート全体を読み込む
  var deleteLabel = sheet.getDataRange().getValues(); //変更はしない
  Logger.log(deleteLabel[0]); //変更はしない

//スターが付いているものを含む場合、starswich1段目コメントアウト、2段目をコメントイン
  // var starswich = "-is:starred"; //スターが付いているものは削除しない場合、こちらをコメントイン
  var starswich = ""; //スターが付いているものを含めて、削除する場合、こちらをコメントイン

//delayDaysより前日ラベルを削除する
  var delayDays = 7; //こちらの数字より前の指定したラベルのメールを削除する

////////////////これより下は変更しない/////////////////////////////////////////////////////

  for (var j = 0; j < deleteLabel.length; j++) {
    var deleteThreads = GmailApp.search('older_than:'+delayDays+'d '+starswich+' label:'+ deleteLabel[j]);

    for (var i = 0; i < deleteThreads.length; i++) {
      deleteThreads[i].moveToTrash();
    }
  }

}

すると、下記画像のようになると思います。

まず、下記画像の赤枠の部分について説明します。

わかりずらいので、この部分だけ抜き出しますね。

var sheetId = 'abcd1234'; //シートIDを入力する

この部分は何かというとスプレッドシートに必ずあるシートIDと呼ばれるものです。具体的にどこにあるのかと言いますとスプレッドシートのURLの部分になります。

https://docs.google.com/spreadsheets/d/abcd1234/edit

もし、URLが

https://docs.google.com/spreadsheets/d/bcd5678/edit

となっているなら、

var sheetId = 'bcd5678'; //シートIDを入力する

というように変更します。このスプレッドシートのURLはもちろん、今回
ラベル名を登録するスプレッドシートを選んでくださいね。
ついでに、B列~Z列までは削除してしまいましょう。

次に下画像の赤枠部分をみてください。

見づらいので、抜き出しますね

var sheetName = 'シート1'; //シート名を入力する

この「シート1」というのはスプレッドシートの赤枠の部分になります。

今回は「シート1」のままなので変更しません。

ここまでできたら、下赤枠部分の保存をクリックしてください。

次に下赤枠部分の「実行」をクリックしてください。。

「権限を確認」をクリックしてください。

自分のアカウントをクリックしてください。

すると下画像が出てきます。「詳細」をクリックしてください。

ちなみに、これは自分が作ったアプリでないなら、危険ですが今回は自分で作ったものなので、心配する必要はありません。「無題のプロジェクト(安全ではないページ)に移動」をクリックします。


下赤枠の「許可」をクリックします。

※実行後、エラーとなる場合は、gmailのラベルの中のメール数が多すぎて、処理が終わらなかっただけで、削除はされてます。エラーが出なくなるまで、繰り返し実行して「実行完了」が出るまで続けてください。


次に下赤枠の「トリガー」をクリックします。

「トリガーを追加」をクリックします。

「日付ベースのタイマー」をクリックします。

「保存」をクリックします。

以上で、完成です。

ちなみに7日前に削除ではなく、10日前に削除にしたい場合は

拡大します。

 var delayDays = 7; //こちらの数字より前の指定したラベルのメールを削除する

この7の部分を

 var delayDays = 10; //こちらの数字より前の指定したラベルのメールを削除する

と変更すればできます。

「※以降に文章はありません。「投げ銭」での応援を歓迎します。」

ここから先は

0字

¥ 500

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?