不要なメールの配信停止をGASで自動化

不要なメールの配信停止をGASで自動化

記事
IT・テクノロジー
不要なメールの配信停止をGASで自動化


■ はじめに:メールの整理は経営者のコスト削減に直結する

どうも、GASおじです。中小企業の経営者やフリーランスの皆さん、日々大量に届く不要なメール、どうしてますか?受信トレイが広告メールやニュースレターで埋まってしまうと、重要なメールを見逃したり、時間の無駄になったりしますよね。

そこで今回は、Google Apps Script(以下GAS)を使って、Gmailの不要なメールの配信停止(いわゆる「unsubscribe」)を自動化する方法をご紹介します。手作業でポチポチ解除するのはもうやめましょう。GASならGoogleアカウントの利用枠内で追加の専用SaaS料金なしに実装可能です。ただしApps Scriptのquota・実行上限はありますので、その点はご注意ください。


■ 初期設定と権限について

まず、このスクリプトを動かすにはGmailとGoogle Driveへのアクセス権限が必要です。GASエディタで新規プロジェクトを作成し、スクリプトを貼り付けて実行すると、初回は認証が求められます。権限は以下の通りです。

・Gmailのメール読み取り・検索
・Google Driveへのファイル作成
また、定期的に自動実行したい場合はインストール可能なトリガー(installable trigger)を設定してください。そうすることで毎日や毎週などのスケジュールで実行可能です。


■ スクリプトの概要と設計方針

おじさんが特に気をつけているのは「既存データを上書きしない」こと。誤って大事な情報を消さないように、メールの配信停止処理結果は新しい日時付きのスプレッドシートファイルに書き出します。

また、いきなりメールに直接作用するのではなく、まずはunsubscribeリンク抽出と配信停止処理の候補を判定し、バックアップを残した上でバッチ処理を行います。削除系のAPIは一切使いません。


■ コード例:不要メールのunsubscribeリンクを抽出して結果を新規シートに出力

function unsubscribeAutomation() {
const labelName = 'unsubscribe-target'; // 対象メールには手動でこのラベルを付けておく
const threads = GmailApp.getUserLabelByName(labelName)?.getThreads() || [];
if (threads.length === 0) {
Logger.log('対象のメールがありません');
return;
}

// 日時付きファイル名で新規スプレッドシートを作成
const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
const ss = SpreadsheetApp.create(`Unsubscribe_Result_${timestamp}`);
const sheet = ss.getActiveSheet();
sheet.appendRow(['メール件名', '送信者', '配信停止リンク', '処理日時', '備考']);

threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(msg => {
const subject = msg.getSubject();
const from = msg.getFrom();
const body = msg.getBody();

// 単純にアンsubscribeリンクを抽出(例:hrefに"unsubscribe"を含むURL)
const unsubscribeUrls = [...body.matchAll(/https?:\/\/[^\s"']*unsubscribe[^\s"']*/gi)].map(m => m[0]);

if (unsubscribeUrls.length > 0) {
unsubscribeUrls.forEach(url => {
sheet.appendRow([subject, from, url, new Date(), '手動で配信停止リンクを確認の上対応']);
});
} else {
sheet.appendRow([subject, from, 'リンクなし', new Date(), '配信停止リンクが見つかりません']);
}
});
});
Logger.log(`処理結果をスプレッドシートに出力しました: ${ss.getUrl()}`);
}


□ ポイント解説

・ラベル「unsubscribe-target」を使って対象メールを絞ります。これで誤操作リスクを減らせます。
・配信停止リンクはメール本文から正規表現で抽出。完全自動化は難しいので、結果を目視で確認しながら次のステップへ進める想定です。
・結果は新規作成したスプレッドシートに書き込み。既存データは一切書き換えません。
・直接メールに変更を加えず、まずは情報を整理してから手動や別の自動処理につなげる設計です。


■ コスト削減効果の目安

例えば、1通あたりの不要メール処理にかかる時間を30秒と仮定し、月に100通の不要メールが来るとします。時給3,000円の経営者やスタッフの場合、

30秒 × 100通 = 3,000秒 = 50分 = 0.83時間
0.83時間 × 3,000円 = 約2,500円/月

この時間とコストを自動化で削減すれば、年間で約3万円の効果に。もちろんこれは仮定の計算式であって保証値ではありませんが、無駄な作業を減らすヒントにはなるでしょう。


□ 個人情報の取り扱いと復元手順

・本スクリプトはGmailのメール本文や送信者情報を取得しますが、情報はご自身のGoogleアカウント内で完結します。
・取得したデータはGoogle Drive上の新規スプレッドシートに保存されるため、誤って消さないようにバックアップ管理を推奨します。
・もし誤って実行した場合は、作成されたスプレッドシートを削除するだけで復元は不要です。メール自体には変更を加えていません。


□ おわりに

今回はGASを使った不要メール配信停止の自動化例を紹介しました。完全な自動化は難しいものの、配信停止リンクの抽出と一覧化によって作業効率アップを狙えます。Googleアカウントの利用枠内で追加の専用SaaS料金なしに始められるのも魅力です。ぜひ試してみてください。

■ GASの相談や導入サポートを見たい方へ

この記事と近い作業をGoogleシートやGASで整えたい方は、Gasおじのココナラ出品一覧もご覧ください。

■ 関連サービス

GASおじのココナラ出品一覧
日々の記録、確認、通知、投稿準備などを、GoogleスプレッドシートとGASで無理なく自動化する相談ができます。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す