今までどれだけ無駄使いしてきたかな~。。
ということで、今回は「GMAILの不要なメール」を検索するプログラムを作成しましたので、
展開していきたいと思います!
gmailの不要メールを一括削除(検索)するプログラム
gmailの容量が10GBを超えてきて、さすがに、過去のメール、いらないメールを消していかないといけないな。
ということで、
gmailの不要メールを一括で検索⇒削除するプログラムを作成しました!
これのおかげで5GBまでとりあえず減らすことが出来ましたので、皆様も一度お試しください。
どんなことが出来るの?
できることは、
プログラム①
・受信数の多い受信先の一覧を作成
プログラム②
・受信先一覧より、不要なメールを削除
と、いう流れになります。
実際には、
プログラム①で、
・上位3000件のスレッドを検索 、受信数の多い順に並び替える
↓
手作業で、
・消したいメールのフラグを設定
プログラム②で、
・一括削除
という流れになります。
また、いつからのメールを検索するかを設定することもできます。
出来ること
下記の通り、
検索対象の日付より前のメールを3000件並べ、
受信数の多い順番で、アドレスを並び替えます。
これで、受信数の多いメルマガなどを判断することができます。
さらに、削除フラグを立てたアドレスのメールを削除していきます。
消す期間も選ぶことができます。
プログラム展開
実際のプログラムは下記のとおりです。
↓よりプログラムをコピーしてお使いください。
プログラムの実行には承認が必要です。
下記の通り、プログラムの承認をお願いいたします。
承認方法
実行を押す。
プログラムの承認を続行
アカウントを選択
左下の灰色の小さい「詳細」をクリック
○○(安全ではないページ)に移動をクリック
許可をクリック
プログラム紹介
プログラム①
MailRist で、3000件のメールを並べ
TYOFUKU で、重複を削除、多い順に並び替えています。
function myFunction2() {
var book = SpreadsheetApp.getActiveSpreadsheet()
var sheet1 = book.getSheetByName("メール確認")
book.toast("対象メール検索中 ※少々時間がかかります。", "実行中", -1)
const datebefore = Utilities.formatDate(sheet1.getRange(1, 3).getValue(), 'Asia/Tokyo', 'yyyy/MM/dd');
dateA = MailRist(datebefore, 1)
sheet1.getRange(1, 2).setValue(dateA);
TYOFUKU
}
function TYOFUKU() {
var book = SpreadsheetApp.getActiveSpreadsheet()
var sheet1 = book.getSheetByName("メール確認")
sheet1.getRange(3, 7, 5000, 1).setValues(sheet1.getRange(3, 2, 5000, 1).getValues());
sheet1.getRange(3, 7, 5000, 1).removeDuplicates([7]);
sheet1.getRange(3, 6, 5000, 3).sort({ column: 6, ascending: false });
}
function MailRist(datebefore, j) {
var book = SpreadsheetApp.getActiveSpreadsheet()
var sheet1 = book.getSheetByName("メール確認")
book.toast((j - 1) * 500 + '~' + j * 500 + "対象メール検索中 ※少々時間がかかります。", "実行中", -1)
var findkey = "before:" + datebefore
var kensakukekka = GmailApp.search(findkey, 0, 500);
var Msg = GmailApp.getMessagesForThreads(kensakukekka);//二次元配列
var OutputMsg = [];
var maxc = 0;
book.toast("findkey", 5, 5)
/* 各メールから日時、送信元、件名、内容を取り出す */
for (var i = 0; i < Msg.length; i++) {
var date2 = Msg[i][0].getDate();
var from = Msg[i][0].getFrom();
var subj = Msg[i][0].getSubject();
/*var body = Msg[i][0].getBody().slice(0,100000);*/
var perm = kensakukekka[i].getPermalink();
var S_num = from.indexOf('<');
var E_num = from.indexOf('>');
var from2 = from.substring(S_num + 1, E_num);
OutputMsg.unshift([from, from2, subj, perm])
}
date2.setDate(date2.getDate() - 1);
datebefore = Utilities.formatDate(date2, 'Asia/Tokyo', 'yyyy/MM/dd');
console.log('日付' + datebefore)
for (var i = 0; i < OutputMsg.length; i++) {
var cn = OutputMsg[i].length
if (cn > maxc) { maxc = cn }
}
for (var i = 0; i < OutputMsg.length; i++) {
OutputMsg[i].length = maxc
}
console.log(OutputMsg.length, j)
if (Msg.length > 0) {
var mySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('メール確認');
mySheet.getRange(3 + 500 * (j - 1), 1, OutputMsg.length, maxc).setValues(OutputMsg);
j = j + 1
if (j === 8) {
return date2;
}
}
MailRist(datebefore, j)
Browser.msgBox("完了")
}
プログラム②
フラグがたっているところのアドレスを消しています。
function deleteGmail() {
var book = SpreadsheetApp.getActiveSpreadsheet()
var sheet1 = book.getSheetByName("メール確認")
const datebefore = Utilities.formatDate(sheet1.getRange(2, 12).getValue(), 'Asia/Tokyo', 'yyyy/MM/dd');
var lastY = sheet1.getRange(sheet1.getMaxRows(), 10).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
console.log(lastY)
for (var i = 3; i <= lastY; i++) {
if (sheet1.getRange(i, 10).getValue() === 1) {
var deleteAddress = sheet1.getRange(i, 7).getValue();
var conditions = "before:" + datebefore + 'from:' + deleteAddress + ''
var deleteThreads = GmailApp.search(conditions)
Logger.log("メールは全部で " + deleteThreads.length + " 通です!")
Logger.log("削除を開始します")
// 検索したとき複数で返すのでそれをfor文でループで回しています。
for (var j = 0; j < deleteThreads.length; j++) {
// ここで削除しています
deleteThreads[j].moveToTrash();
// book.toast(i + 1 + " 通目削除しました : " + "メールは全部で " + deleteThreads.length, deleteAddress, -1)
// Logger.log(i + 1 + " 通目削除しました : " + deleteThreads[i])
}
Logger.log(deleteThreads.length + " 通の削除を完了しました!")
}
}
}
まとめ
正直このプログラムを使うより、どんどん消していった方が効率がいいのですが、
「このアドレスから大量にメールが来てる!!」というのが分からないという状況でしたので、
このプログラムを作成しました。
ぜひ使ってみてください!!
コメント欄