GASでGmail自動仕分け・ラベル付け メール整理を1日20分削減するレシピ
取引先ごとにメールを探す、請求書だけ後で読み返す、メルマガを手でアーカイブする。この仕分け作業は Google Apps Script (Google が無料提供する自動化の仕組み) で自動化できます。届いたメールを条件で判定し、ラベルを自動で付ける仕組みを、コピーして動くコード付きで構築します。月額は ¥0 です。
- 月額 ¥0。Google アカウントさえあれば追加契約なしで動く
- 取引先・請求書・メルマガなど複数の条件を「ルール」として一括管理し、届いたメールに自動でラベルを付ける
- 優先度の低いメール (メルマガ等) は自動でアーカイブし、受信トレイを常に空に近い状態に保てる
- この記事のコードはコピーしてルール表を書き換えるだけで動く実物です
- 編集部の試算では、1 日あたり約 20 分の受信トレイ整理時間を削減
編集長の見解: Gmail には標準のフィルタ機能がありますが、条件が増えるほど管理画面での設定が煩雑になり、後から見直しづらくなります。Google Apps Script でルールを配列としてコードに書けば、全ルールが 1 か所に一覧化され、追加・削除・優先度の調整が数行の編集で済みます。SaneBox のような有料の受信トレイ整理サービスもありますが、条件がシンプルな「送信元」「件名キーワード」「カテゴリ」の組み合わせで足りるなら、無料の Google Apps Script で十分に代替できます。
このレシピで解決する課題
メールが 1 日に何十件も届く事業者に共通する、判断の余地が小さい仕分け作業を整理します。
- 取引先メールが埋もれる: 重要な取引先からのメールが、メルマガや通知メールに紛れて見落とされる
- 請求書を後から探せない: 「先月の請求書メールはどこ」 と検索するたびに時間を使う
- メルマガが受信トレイを圧迫: 読まないメルマガが未読のまま溜まり、本当に大事なメールが埋もれる
- 手作業のラベル付けが続かない: 最初の数日は手でラベルを付けるが、忙しくなると自己流ルールが崩壊する
- 担当者交代時の引き継ぎが困難: 「どのメールにどう対応するか」 が担当者の頭の中にしかない
これらは条件さえ決まれば 機械的に判定できる作業 です。次のセクションで、完成する仕組みの全体像を示します。
完成形 (フロー図)
30 分ごとに Google Apps Script が起動し、ルール表に沿って未処理メールをまとめて仕分ける
要点はルールが「配列」 で管理されている点です。取引先が増えても 1 行追加するだけで対応でき、Gmail 標準フィルタのように画面上で 1 件ずつ設定し直す必要がありません。次に、必要なものと費用を確認します。
必要なものと費用
| 必要なもの | 費用 | 役割 |
|---|---|---|
| Google アカウント | ¥0 | Gmail の利用 |
| Google Apps Script | ¥0 | 自動化を動かす仕組み本体 |
| Gmail のラベル機能 | ¥0 | 分類先そのもの (Google 標準機能) |
| Google Workspace (任意) | ¥800 / ユーザー / 月 〜 | 独自ドメイン + 利用上限の拡大 |
Google Apps Script は Google アカウントに標準で付属しており、追加のインストールや契約は不要です[出典]。Google Workspace の Starter プランは月額 ¥800 / ユーザーですが[出典]、本レシピの目的 (ラベル自動付与) だけなら 無料アカウントのままで十分に実用になります。
Gmail 標準フィルタと使い分ける基準
ルールが 1〜3 件程度で今後も増える見込みがないなら、Gmail の設定画面から作る標準フィルタで十分です。ルールが 4 件を超える、あるいは「メルマガは自動アーカイブしつつ請求書は残す」 のように条件を組み合わせたい場合に、本レシピのようなコード管理が効いてきます。
有料の受信トレイ整理サービスと何が違うか
同様の仕分けは SaneBox や Zapier でも実現できます。編集部の比較は以下のとおりです。
| 比較項目 | Google Apps Script | SaneBox | Zapier |
|---|---|---|---|
| 月額費用 | ¥0 | $7 (約 ¥1,085) から | 無料枠あり / 有料は $19.99 (約 ¥3,100) から |
| 判定ロジック | 自分で条件を記述 (完全に自由) | AI が自動学習 (中身はブラックボックス) | 画面操作でルール作成 |
| 設定の難しさ | 中 (コードを貼り付ける) | 易 (登録するだけ) | 易 (画面操作のみ) |
| 細かい制御 | 高 (送信元・件名・添付有無を自由に組合せ) | 中 | 中 |
| Gmail 以外との連携 | 追加実装が必要 | 非対応 (メール専用) | 得意 |
| 編集部のおすすめ度 | ★★★★★ (Gmail 内で完結する用途) | ★★★☆ (学習型で楽をしたいなら) | ★★★☆ (他サービスと繋ぐなら) |
SaneBox の料金は最安プランで月額 $7 からです[出典]、Zapier の有料プランは月額 $19.99 からです[出典] (円換算は ¥155 / $ で編集部が算出した目安)。
判断の目安: 「このメールが届いたらこのラベルを付ける」 という条件を自分で明確に説明できるなら Google Apps Script、条件を言語化しづらく AI に判断を任せたいなら SaneBox、Gmail 以外のサービス (Slack・Notion 等) に通知したいなら Zapier や Make が適します。添付ファイルを Drive に保存したい場合は GASでGmail添付を自動保存する経理向けレシピ も合わせてご覧ください。
次のセクションから、実際の構築手順に入ります。
設定手順 (45 分)
コードを書く前に、紙かメモに「どんなメールを」「どのラベルに」振り分けたいかを書き出します。最初から完璧を目指さず、まずは 3〜4 分類で始めるのが挫折しないコツです。
- 例: 「取引先/A社」「請求書」「メルマガ」「要対応」
- 階層ラベル (親/子) にすると Gmail の左メニューが整理されます
- すでに Gmail 側でラベルを作成済みなら、その名前をそのまま使えます
script.google.com にアクセスし、「新しいプロジェクト」 を選びます。Gmail アカウントに紐づく単独のスクリプトとして動くため、スプレッドシートを経由する必要はありません。
プロジェクト名は「Gmail 自動ラベル」 など分かりやすいものに変更してください。
本記事の次セクションにあるコード全文をエディタに貼り付けます。書き換えるのは冒頭の RULES 配列だけです。
- label: 付けたいラベル名 (Step 1 で決めたもの)
- query: Gmail の検索演算子 (from:, subject:, category: など)
- archive: 受信トレイから自動で外したいなら true、残したいなら false
貼り付けたらフロッピーディスクのアイコンで保存します。
エディタ上部の関数選択欄で autoLabelInbox を選んで実行します。
- 初回実行時に Gmail へのアクセス許可を求める画面が出ます
- 「詳細」 から自分のプロジェクトを選び、許可してください
- 該当するメールにラベルが付き、archive: true のものが受信トレイから消えていれば成功です
意図しないメールにラベルが付いた場合は、query の条件を先に見直します。
トリガー (指定した間隔でプログラムを自動起動する設定) を作れば、あとは放置で動き続けます。
- 後述の createTrigger 関数を 1 回だけ手動実行する方法が確実です
- 推奨は 30 分ごと。無料アカウントでは短すぎる間隔は上限に抵触します (後述)
設定後 2〜3 日は、意図した仕分けになっているか受信トレイを目視で確認してください。
以上で構築は完了です。次に、実際に貼り付けるコードの全文を掲載します。
コード全文 (そのまま動きます)
以下は編集部が動作確認した実物です。冒頭の RULES 配列だけを自分の環境に合わせて書き換えてください。
// ===== 設定: ラベル分類ルール (上から順に判定) =====
const RULES = [
{ label: '取引先/A社', query: 'from:sales@a-company.example -label:取引先/A社', archive: false },
{ label: '請求書', query: 'subject:(請求書 OR invoice) has:attachment -label:請求書', archive: false },
{ label: '要対応', query: 'subject:(至急 OR 緊急 OR ご確認ください) -label:要対応', archive: false },
{ label: 'メルマガ', query: 'category:promotions -label:メルマガ', archive: true },
];
const MAX_THREADS_PER_RULE = 30; // 1 ルールあたり 1 回の実行で処理する上限
// ====================================
/**
* ルール表に沿って Gmail のメールへラベルを付ける。
* archive: true のルールは、ラベル付与と同時に受信トレイからアーカイブする。
* トリガーから 30 分ごとに呼ばれる想定。
*/
function autoLabelInbox() {
RULES.forEach(function (rule) {
const label = getOrCreateLabel_(rule.label);
const threads = GmailApp.search(rule.query, 0, MAX_THREADS_PER_RULE);
if (threads.length === 0) return;
threads.forEach(function (thread) {
thread.addLabel(label);
if (rule.archive) {
thread.moveToArchive();
}
});
});
}
/** 指定名のラベルを取得。無ければ作る。階層ラベル (親/子) にも対応。 */
function getOrCreateLabel_(name) {
return GmailApp.getUserLabelByName(name) || GmailApp.createLabel(name);
}
初回だけ実行するトリガー登録の関数も併せて貼り付けておくと便利です。
/** 初回に 1 回だけ実行: 30 分ごとのトリガーを登録する */
function createTrigger() {
ScriptApp.getProjectTriggers().forEach(function (t) {
if (t.getHandlerFunction() === 'autoLabelInbox') {
ScriptApp.deleteTrigger(t); // 重複登録を防ぐ
}
});
ScriptApp.newTrigger('autoLabelInbox')
.timeBased()
.everyMinutes(30)
.create();
}
なぜ検索条件に「-label:○○」 を必ず入れるのか
すでにラベルが付いたメールを毎回除外しないと、トリガーが回るたびに同じスレッドを再検索し続け、実行時間を無駄に消費します。本記事のコードでは ラベル名の否定条件 (-label:) を検索クエリに含める ことで、未処理のメールだけを対象にしています。ルールを追加する際は、この書き方を必ず踏襲してください。
コードを動かす前に、Google 側が定める利用上限を必ず把握してください。次のセクションで整理します。
Google Apps Script の利用上限 (クォータ)
Google Apps Script は無料ですが、無制限ではありません。アカウント種別ごとに 1 日あたりの上限 (クォータ) が定められています[出典]。本レシピに関係する主な項目は以下のとおりです。
| 制限項目 | 無料アカウント (gmail.com) | Google Workspace |
|---|---|---|
| 1 回の実行時間 | 6 分 | 6 分 |
| トリガーの合計実行時間 | 90 分 / 日 | 6 時間 / 日 |
| トリガー数 | 20 / ユーザー / スクリプト | 20 / ユーザー / スクリプト |
| Gmail の読み書き (送信を除く) | 20,000 回 / 日 | 50,000 回 / 日 |
トリガーは最短 1 分間隔から設定できます[出典]。ただし 設定できる間隔と、上限内で回せる間隔は別物 です。
無料アカウントで最も詰まりやすい制限: トリガー合計 90 分 / 日
無料アカウントのトリガー実行時間は 1 日合計で 90 分 です。30 分ごと (1 日 48 回) なら 1 回あたり平均 1.9 分まで使える計算になり、本レシピのルール数 (4〜6 件程度) なら十分に収まります。ルールを 20 件以上に増やす、あるいは 5 分ごとに実行するといった使い方をすると上限に近づくため、その場合は Google Workspace への切り替えを検討してください。
これらの上限を踏まえたうえで、実際にどれだけの工数が削減できるかを試算します。
Mira のシミュレーション (期待効果の試算)
以下は 編集部による試算 です。実際の効果は受信メールの件数・業務フローにより変動します。
前提: 1 日に届く 50〜80 件のメールのうち、目視で仕分け・アーカイブ・重要メールの再確認に 1 日あたり合計 25 分かかっているものとします。自動化後は、ルールに当てはまらない例外メールの確認のみが残ると想定します。
- 取引先メールの検索: 1 日 8 分
- メルマガの手動アーカイブ: 1 日 7 分
- 請求書メールの見分け: 1 日 5 分
- 重要メールの見落とし対応: 1 日 5 分
- 月額費用: ¥0 (人件費のみ)
- 合計: 1 日 25 分
- 取引先メールの検索: 0 分 (ラベルで即座に絞込)
- メルマガの手動アーカイブ: 0 分 (全自動)
- 請求書メールの見分け: 0 分 (全自動)
- 例外メールの確認: 1 日 5 分
- 月額費用: ¥0 (Google Apps Script は無料)
- 合計: 1 日 5 分
編集部の試算: 1 日 20 分 = 月 20 営業日換算で月 6.7 時間相当の削減。追加の月額費用は発生しない
ただし 1 日 20 分という数字は 1 日 50〜80 件のメールを受け取る事業者の場合 です。受信件数が少なければ削減幅も小さくなります。自社の規模に近い行をご確認ください。
| 1 日の受信件数 | 手作業の仕分け時間 | 自動化後 | 削減幅 (1 日あたり) |
|---|---|---|---|
| 20 件 (個人事業主) | 約 10 分 | 約 3 分 | 約 7 分 / 日 |
| 50 件 (数名規模) | 約 20 分 | 約 4 分 | 約 16 分 / 日 |
| 80 件 (20〜50 名規模) | 約 25 分 | 約 5 分 | 約 20 分 / 日 |
| 150 件 (50 名超) | 約 40 分 | 約 8 分 | 約 32 分 / 日 |
1 日 20 件規模の個人事業主でも、月 20 営業日換算で約 2.3 時間の削減です。45 分の初期構築は 1 か月以内に回収できる計算になります。次に、導入時に実際に起きる失敗を挙げます。
編集部の警告 ⚠️ よくある 3 つの失敗
失敗パターン 1: 検索条件が広すぎて関係ないメールまでラベルが付く
category:promotions のような広い条件は便利ですが、まれに重要な取引先からのお知らせメールまでプロモーションタブに分類されることがあります。導入直後の 1〜2 週間はアーカイブ (archive: true) を使わず、まずラベル付けだけ試す ことをおすすめします。挙動に問題がなければ archive を true に切り替えてください。
失敗パターン 2: ルールの順番によって意図と違うラベルが優先される
本記事のコードは RULES 配列の 上から順に判定し、1 通のメールに複数ラベルが付くこともあります。「請求書かつ要対応」 のように両方付けたい場合は問題ありませんが、片方だけにしたい場合はルールの query に除外条件 (-subject:など) を追加して重複を防いでください。
失敗パターン 3: 権限の承認画面で止まったまま放置される
初回実行時、Google は「このアプリは Google で確認されていません」 という警告を表示します。これは自分で書いたコードを自分のアカウントで動かす場合の通常表示です。「詳細」 を開き、自分のプロジェクト名のリンクから承認してください。ここを承認せずに閉じると、トリガーを設定しても一切動きません。
失敗の多くは条件設定の広さに起因します。最初は狭い条件から始め、徐々に広げるつもりで取り組んでください。
補助金の活用 (編集部の提案)
本レシピ単体では補助金の対象になりにくい
Google Apps Script は無料であり、支払いが発生しないため 補助対象経費 (補助金がもらえる費目) が存在しません。一方で、メール対応の自動化・業務効率化ツールの導入と組み合わせる形であれば、業務改善計画の一部として説明材料になります。IT 導入補助金 2026 の詳細 で対象ツールの条件をご確認ください。
申請書に書ける「現状の業務課題」 として使う
個人事業主や小規模事業者が 小規模事業者持続化補助金 を申請する際、本レシピで測定した削減時間は「バックオフィス改善に自力で取り組んでいる実績」 として記載できます。採択 (申請が通ること) を狙ううえで、既に手を動かしている事実は説得力になります。
補助金を待たずに今日から始められるのが、無料で完結する本レシピの利点です。
関連レシピ
- GASでGmail添付を自動保存 月¥0で経理作業を週3時間削減
- GASでGoogleフォーム回答をSlack通知に自動連携
- Zapier で Gmail 問い合わせ→Slack通知を自動化
- Zapier で Gmail 問い合わせ→スプレッドシート集計を自動化
よくある質問
Q. プログラミングの経験がなくても設定できますか?
編集部の答え: 本記事のコードは書き換える箇所を RULES 配列の 3 項目 (label / query / archive) に限定してあります。Gmail の検索演算子 (from:, subject:, category: など) を Gmail の検索窓で試してから query に書き写せば、コードの中身を理解していなくても動きます。
Q. 既存の Gmail 標準フィルタと併用できますか?
編集部の答え: はい、併用できます。Gmail 標準フィルタと Google Apps Script は独立した仕組みのため、簡単な条件は標準フィルタ、複数条件の組み合わせや将来増える見込みのルールは本レシピのコードで管理する、という使い分けが可能です。ただし同じ条件を両方に設定すると処理が二重になるだけなので、どちらか一方に寄せてください。
Q. ラベルを付けた後、自動で返信もできますか?
編集部の答え: 本レシピはラベル付与とアーカイブまでを担当します。自動返信を追加したい場合は GmailApp.sendEmail を使って別途関数を書く必要があり、誤送信のリスクも高まるため、まずはラベル付けの精度を確認してから慎重に検討することをおすすめします。
Q. 複数人で使う場合はどうすればいいですか?
編集部の答え: スクリプトは作成者のアカウント権限で動作します。複数人で同じ受信箱 (共有メールアドレスなど) を使う場合は、その共有アカウントの Gmail に直接スクリプトを紐づけてください。個人アカウントに紐づけると、退職時にすべて止まるため避けてください。
出典・参考情報
- Google Apps Script のクォータと制限 — https://developers.google.com/apps-script/guides/services/quotas
- Google Apps Script インストール可能なトリガー — https://developers.google.com/apps-script/guides/triggers/installable
- Google Apps Script GmailApp リファレンス — https://developers.google.com/apps-script/reference/gmail/gmail-app
- Google Workspace 料金プラン — https://workspace.google.com/intl/ja/pricing.html
- SaneBox 料金プラン — https://www.sanebox.com/pricing
- Zapier 料金プラン — https://zapier.com/pricing
- 中小企業庁 IT 導入補助金 — https://www.it-hojo.jp/
本記事の数値のうち、「編集部の試算」 と明示された箇所は編集部によるシミュレーションです。実際の効果は事業特性により変動します。機能・料金・利用上限は各社公式情報源を確認のうえご判断ください。
編集長 Mira / AI経営ラボ 本記事は 2026-07-26 時点の情報です。Google Apps Script の利用上限は予告なく変更される場合があります。