スプレッドシートのリストを読み取って、gmailを自動削除する方法
「※全文を公開している「投げ銭」スタイルのノートです。」
最近、googleのストレージが圧迫されて困っていませんか?
いらないメールを削除すれば、それが解消されるとはいえ、一々、手作業で選んで、削除するのは時間の無駄ですし、大変です。
「もし、7日前のメールを自動で削除できたら、圧倒的に楽になるのに…」
そう思ったことありますよね。
そこで、今回は、指定したメールアドレスのメールだけを自動削除するための方法を紹介します。
もちろん、7日前ではなく、10日前や30日前など、好きな日付より前にすることも可能です。
最終的にどんな感じになるかというと
下はスプレッドシートの画面なのですが。
![](https://assets.st-note.com/img/1660795770132-5tYUfosWaL.png)
上記のようにスプレッドシートにどんどんGmailのラベルを追加してあげれば、それだけで、自動削除できるようになります。
Gmailのラベルというのは下記のサイトのようなものです。
具体的にはどのようにして、ラベルの登録を行うのかというと、自動削除したいメールアドレスのメールを開いて、下の赤枠の三点リーダをクリックしてください。
![](https://assets.st-note.com/img/1660799710059-CYmP3VvUeV.png?width=1200)
「メールの自動振り分け」をクリックして、「フィルタを作成」をクリックします。
![](https://assets.st-note.com/img/1660800171998-Xyz8jn34PB.png?width=1200)
ラベル名を適当に決めて、下記画像のようにチェックを入れたら「フィルタを作成」をクリックします。
![](https://assets.st-note.com/img/1660800270898-wg2bVlPoGS.png?width=1200)
これで終了です。後はこのラベル名をさっきのスプレッドシートに追加すると、自動削除できるという仕組みです。
![](https://assets.st-note.com/img/1660795770132-5tYUfosWaL.png)
では、具体的にどのような設定をすれば、ラベル名を貼り付けただけで、7日前以前の指定したラベルの付いたメールを削除することができるのでしょうか。
下記のサイトにアクセスしてください。
画面が開いたら、左側にある「新しいプロジェクト」をクリックします。
![](https://assets.st-note.com/img/1660800762353-iIP3jWR8yM.png)
下の赤枠の文字を削除します。
![](https://assets.st-note.com/img/1660800895022-ubJwao3qhb.png?width=1200)
すると、下記画像のように何もない画面となります。
![](https://assets.st-note.com/img/1660801143161-KNYqpZw1j6.png?width=1200)
ここに以下の文字の羅列(コード)をコピペしてください。
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();
}
}
}
すると、下記画像のようになると思います。
![](https://assets.st-note.com/img/1660801391945-93AamdhDqa.png?width=1200)
まず、下記画像の赤枠の部分について説明します。
![](https://assets.st-note.com/img/1660801526482-FAA2rm7Cmb.png?width=1200)
わかりずらいので、この部分だけ抜き出しますね。
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列までは削除してしまいましょう。
![](https://assets.st-note.com/img/1660802480020-jZCpn5QjDI.png?width=1200)
次に下画像の赤枠部分をみてください。
![](https://assets.st-note.com/img/1660802640223-VmH4wkhUG3.png?width=1200)
見づらいので、抜き出しますね
var sheetName = 'シート1'; //シート名を入力する
この「シート1」というのはスプレッドシートの赤枠の部分になります。
![](https://assets.st-note.com/img/1660802937620-NMRIxQnTjB.png?width=1200)
今回は「シート1」のままなので変更しません。
ここまでできたら、下赤枠部分の保存をクリックしてください。
![](https://assets.st-note.com/img/1660803159497-CvLK4arccb.png?width=1200)
次に下赤枠部分の「実行」をクリックしてください。。
![](https://assets.st-note.com/img/1660803219816-SuLq5wTN1g.png?width=1200)
「権限を確認」をクリックしてください。
![](https://assets.st-note.com/img/1660803257662-1osuEsaw7l.png)
自分のアカウントをクリックしてください。
![](https://assets.st-note.com/img/1660803914487-sdjC8FJkhC.png)
すると下画像が出てきます。「詳細」をクリックしてください。
![](https://assets.st-note.com/img/1660803869048-U2LxBibayC.png)
ちなみに、これは自分が作ったアプリでないなら、危険ですが今回は自分で作ったものなので、心配する必要はありません。「無題のプロジェクト(安全ではないページ)に移動」をクリックします。
![](https://assets.st-note.com/img/1660803958421-NipeRdNqBX.png)
下赤枠の「許可」をクリックします。
![](https://assets.st-note.com/img/1660804087132-ghJmm3ix3K.png)
※実行後、エラーとなる場合は、gmailのラベルの中のメール数が多すぎて、処理が終わらなかっただけで、削除はされてます。エラーが出なくなるまで、繰り返し実行して「実行完了」が出るまで続けてください。
次に下赤枠の「トリガー」をクリックします。
![](https://assets.st-note.com/img/1660804228158-6xG3z2em2L.png)
「トリガーを追加」をクリックします。
![](https://assets.st-note.com/img/1660804322213-beVqnLKsbT.png?width=1200)
「日付ベースのタイマー」をクリックします。
![](https://assets.st-note.com/img/1660804394678-CPQp2US4LD.png?width=1200)
「保存」をクリックします。
![](https://assets.st-note.com/img/1660804441045-iLZfXKmGyB.png?width=1200)
以上で、完成です。
ちなみに7日前に削除ではなく、10日前に削除にしたい場合は
![](https://assets.st-note.com/img/1660805253747-08LcB0DIyf.png?width=1200)
拡大します。
var delayDays = 7; //こちらの数字より前の指定したラベルのメールを削除する
この7の部分を
var delayDays = 10; //こちらの数字より前の指定したラベルのメールを削除する
と変更すればできます。
「※以降に文章はありません。「投げ銭」での応援を歓迎します。」
ここから先は
¥ 500
この記事が気に入ったらチップで応援してみませんか?