古いGmailメールを自動削除して同期を高速化する方法
何年も使い続けたGmailアカウントには、50万通を超えるメールが簡単に溜まります。この量がThunderbirdやOutlook、スマートフォンのメールアプリを極端に遅くする原因です。各クライアントは受信トレイ全体を索引付けして同期するため、帯域、メモリ、バッテリーを大量に消費します。毎日手作業で削除するのは時間がかかり、ミスも起きやすくなります。
巨大なメールボックスがクライアントを遅くする理由
デスクトップとモバイルのクライアントは、メールボックスのローカルコピーを保持します。スレッド数が増えるほど初回同期は長くなり、ローカルデータベースは肥大化し、接続が切れる頻度も上がります。Gmail自体は快適でも、IMAPクライアントはそうではありません。実用的な解決策は、直近90日分など最近のメールだけを残し、それより古いものを削除することです。
Google Apps Scriptによるバッチ削除スクリプト
Google Apps Scriptを使えば、この整理を無料で自動化できます。script.google.comを開いて新しいプロジェクトを作成し、以下のコードを貼り付けます。domains 配列を編集して自分のアドレスやドメインを追加してください。対象の送信者からのメールだけが処理されます。スクリプトは90日より古いスレッドを検索し、小さなバッチでゴミ箱へ移動し、6分の実行制限に達する前に停止します。スレッドは30日間ゴミ箱から復元できます。
function deleteNewsletters3MonthsPermanent() {
var domains = [
"site1.com", "user@site2.com",
];
var batchSize = 25;
var totalDeleted = 0;
var startTime = new Date().getTime();
var maxExecutionTimeMs = 5 * 60 * 1000; // 5 minutes safety threshold
for (var b = 0; b < domains.length; b += batchSize) {
if (new Date().getTime() - startTime > maxExecutionTimeMs) {
Logger.log("Execution limit approaching. Stopped safely. Permanently deleted so far: " + totalDeleted);
return;
}
var chunk = domains.slice(b, b + batchSize);
var fromFilters = chunk.map(function(d) {
return d.indexOf('@') > -1 ? 'from:' + d : 'from:*@' + d;
}).join(' OR ');
var searchQuery = '(' + fromFilters + ') older_than:90d';
var pageToken = null;
do {
if (new Date().getTime() - startTime > maxExecutionTimeMs) {
Logger.log("Execution limit approaching inside pagination. Permanently deleted so far: " + totalDeleted);
return;
}
// Max results allowed per list request by the API is 500
var response = Gmail.Users.Messages.list('me', {
q: searchQuery,
maxResults: 500,
pageToken: pageToken
});
if (response.messages && response.messages.length > 0) {
var messageIds = response.messages.map(function(m) { return m.id; });
// Permanent bulk delete: 50 quota units for up to 1,000 IDs
Gmail.Users.Messages.batchDelete({ ids: messageIds }, 'me');
totalDeleted += messageIds.length;
// Small delay to keep rate pacing clean
Utilities.sleep(600);
}
pageToken = response.nextPageToken;
} while (pageToken);
}
Logger.log("Finished. Total messages permanently deleted: " + totalDeleted);
}追加のコツと安全なバックアップ
実行する前に、Google Takeoutでメールボックスをエクスポートし、ローカルにコピーを残してください。まずは範囲の狭い検索条件でテストし、その後で対象を広げます。Thunderbirdでは「すべてのメール」フォルダの購読を解除し、IMAP同期をヘッダーのみ、または直近数日に限定すると、遅延がすぐに改善します。
一緒に取り組みましょう
さらに詳しい情報やプロジェクトのヘルプ、またはアイデアの構築が必要ですか?
簡単な質問でもフルプロジェクトでも、お気軽にどうぞ。お問い合わせいただき、あなたのアイデアを一緒に実現しましょう。
お問い合わせ →