毎朝パソコンを開くと、受信箱がメールでいっぱい。そんな状況になっていませんか?
- 「メルマガや通知メールに埋もれて、大事なメールを見落としそうになる」
- 「毎回手作業でラベルを付けたり、アーカイブしたりするのが面倒」
- 「Gmailのフィルタだけでは、細かい条件の整理が追いつかない」
こうした「毎日ちょっとだけ時間を取られる作業」こそ、自動化の効果がいちばん出やすいところです。
今回は、Google Apps Script(GAS)を使って、Gmailのラベル付けとアーカイブを自動化する方法を紹介します。
受信箱が散らかってしまう理由
受信箱が散らかる一番の原因は、「あとで整理しよう」が積み重なることです。
1通1通は数秒で片付くメールでも、毎日数十通届けば、それだけで集中力が削られていきます。
しかも、整理のルールが頭の中にしかないと、忙しい日ほど後回しになってしまいます。
そこで、整理のルールをコードに書き出して、GASに毎回実行してもらうという発想に切り替えてみましょう。
ルールが目に見える形になるだけでも、受信箱の管理はぐっと楽になります。
GmailAppでラベルを付ける基本コード
まずは、整理のルールを配列で定義し、ルールごとにラベル付けとアーカイブを行うコードです。
スプレッドシートやGoogleドライブから新しいプロジェクトを作成し、以下を貼り付けてください。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
// 整理ルール:Gmailの検索演算子で条件を書く
const RULES = [
{ query: 'from:([email protected] OR [email protected])', label: 'メルマガ', archive: true },
{ query: 'subject:(請求書 OR 領収書)', label: '経理', archive: false },
];
function organizeInbox() {
RULES.forEach(rule => {
// ラベルがなければ作成する
const label = GmailApp.getUserLabelByName(rule.label) || GmailApp.createLabel(rule.label);
// まだラベルが付いていない受信箱のスレッドだけを対象にする(最大100件)
const threads = GmailApp.search(`in:inbox -label:${rule.label} ${rule.query}`, 0, 100);
if (threads.length === 0) return;
label.addToThreads(threads);
if (rule.archive) {
GmailApp.moveThreadsToArchive(threads);
}
console.log(`${rule.label}:${threads.length}件を整理しました`);
});
}ポイントは、検索条件にGmailの検索演算子をそのまま使えることです。
from:、subject:、has:attachment、older_than:7d など、普段Gmailの検索窓で使っている書き方がそのまま使えます。
また、-label: で「すでにラベルが付いたもの」を除外しているので、同じスレッドを何度も処理することがありません。
addToThreads や moveThreadsToArchive は、スレッドをまとめて処理できるメソッドです。1件ずつ処理するより呼び出し回数が減るので、実行時間の短縮にもつながります。
初回実行時には、Gmailへのアクセス許可を求める画面が表示されます。内容を確認して許可してください。
時間主導型トリガーで自動実行する
コードが動くことを確認できたら、あとは定期的に実行されるように設定するだけです。
エディタ左側の「トリガー」(時計のアイコン)から追加することもできますが、コードで作成することもできます。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
// 1時間ごとに organizeInbox を実行するトリガーを作成(1回だけ実行する)
function createTrigger() {
ScriptApp.newTrigger('organizeInbox')
.timeBased()
.everyHours(1)
.create();
}createTrigger は1回だけ実行してください。実行するたびにトリガーが増えてしまうので注意が必要です。
登録されたトリガーは、エディタの「トリガー」画面から確認・削除できます。
運用するときの注意点
便利な自動化ですが、いくつか気をつけておきたい点があります。
- 最初は
archive: falseで試す:意図しないメールがアーカイブされないか、まずはラベル付けだけで様子を見ましょう - 実行時間とクォータに上限がある:GASには1回の実行時間や1日の処理量に上限があります。件数が多い場合は、検索条件を絞るのがおすすめです
- ラベル名にスペースを入れない:検索演算子の
-label:で扱いやすくするため、ラベル名はシンプルにしておくと安心です
GASの処理を速くするコツについては、こちらの記事でもまとめています。
Google Apps Scriptで処理を爆速化!遅いGASを劇的に改善する実践テクニック
まとめ
今回は、GASを使ってGmailのラベル付けとアーカイブを自動化する方法を紹介しました。
- 整理のルールを配列で定義する
- Gmailの検索演算子で対象を絞る
- 時間主導型トリガーで定期実行する
この3ステップだけで、毎朝の「メール仕分け」の手間を大きく減らせます。
まずは1つのルールから、気軽に試してみてくださいね。