GASでGmailの不要なメルマガを自動アーカイブ!毎朝のメール確認をゼロにする方法

GASでGmailの不要なメルマガを自動アーカイブ!毎朝のメール確認をゼロにする方法

2026/05/29

毎日の業務、お疲れ様です。次から次へと届く通知音や、受信トレイを埋め尽くすメールの山に、知らず知らずのうちに心を削られていませんか?

「大切なメールを見逃したくない」という心理は非常によく分かります。しかし、そのために数分おきにメールボックスを開く行為は、エンジニアの世界で言うところの「コンテキストスイッチ(作業の切り替えによる集中力のロス)」を頻発させ、私たちの脳のメモリを常に圧迫しています。

この記事では、現役Webエンジニアの私が実践している「GAS(Google Apps Script)を活用したメールの完全自動整理術」を伝授します。これを取り入れることで、あなたは「メールに追いかけられる」状態から、「自分に必要な情報だけが、適切な場所に自動で整理され、必要な時にだけ確認する」状態へシフトできます。


手動のメールチェックが引き起こした「確定申告パニック」

かつての私は、すべてのメールを「未読」のまま受信トレイに放置し、重要度の低いメルマガやシステムの自動通知メールの山の中から、必死に取引先からの重要な連絡を探し出していました。

私自身の非常に苦い失敗談をお話しします。 数年前、フリーランスのエンジニアとして活動し始めた頃、私は毎月届く「サーバーの利用料明細」「ツールの請求書」「取引先からの支払通知書」などのメールをそのまま放置し、必要になったら検索して手動でPDFをダウンロードし、Googleドライブに保存していました。

ある年の確定申告の直前、税理士から「明細が数ヶ月分足りません」と指摘されました。膨大なメールボックスから「領収書」「請求書」といったキーワードで必死に検索をかけましたが、広告メールや別のアラートメールが数千件ヒットし、どれが本物の請求書メールなのかを見極めるだけで丸二日を浪費しました。挙句の果てに、1通の重要な外注費の請求書メールを見落としており、経費計上が漏れかけ、危うく数十万円の損害を出しそうになったのです。

冷や汗を流しながらメールボックスと格闘したその時、深く痛感しました。 「人間が手動でメールを探し、ダウンロードし、フォルダに分類する作業は、脳のメモリの無駄遣いであるだけでなく、重大なミスの温床である

この失敗から、私はGmailとGAS(Google Apps Script)を連携させ、特定のメールが届いたら「添付ファイルをGoogleドライブの指定フォルダへ自動で保存し、保存完了をSlackへ通知する」という完全自動システムを構築しました。これにより、月初の事務作業の手間と「保存し忘れていないか」という脳のバックグラウンドの不安は100%消え去りました。

以下は、この自動仕分け・保存システムの構成を示す Mermaid ダイアグラムです。

graph TD
    A["外部からメール受信"] -->|① 自動フィルタで判定| B["Gmail: 特定ラベル付与"]
    B -->|② GASが毎時定期実行で検知| C["Google Apps Script"]
    C -->|③ 添付ファイルを取得| D["Google Drive 指定フォルダ"]
    C -->|④ 完了通知をPOST| E["Slack チャンネル"]

    style D fill:#ccffcc,stroke:#333,stroke-width:2px
    style E fill:#ccffcc,stroke:#333,stroke-width:2px

自動整理・API連携のメリットと知っておくべき注意点

メールの自動処理システムを構築するメリットと、実運用におけるリアルな注意点は以下の通りです。

メリット注意点(デメリット)
判断コストの削減: メールを開くたびに「これは保存が必要か?」と考えるエネルギーがゼロになる最初にGASのスクリプトを設定する初期コストがかかる
ヒューマンエラーの完全防止: 機械が処理するため、ダウンロード漏れや二重保存が発生しないGmailのフィルタ設定が間違っていると、無関係なファイルを保存するリスクがある
通知の集約: メールを常時開いておかなくても、必要な完了通知だけがSlack等のチャットツールに届くGoogleドライブのストレージ残量に注意が必要

特に注意すべきは「すべてのメールを最初から完璧に自動化しようとすること」です。まずは「〇〇サービスからの月次請求書メールの添付ファイルを保存する」といった、絶対に間違えようのない単一のルールからスモールスタートし、動作の安定性を確認しながら範囲を広げていきましょう。


【実践】Gmail × GAS による添付ファイル自動保存システムの構築手順

ここでは、現役エンジニアが実際に業務で使用している、Gmailの添付ファイルを自動保存してSlackに通知するGASコードの実物と設定手順を解説します。

ステップ1:Gmailで自動フィルタを作成する

まず、自動保存の対象としたいメールを特定するための「ラベル」をGmail側で作成します。

  1. Gmailの検索窓に、対象メールの条件(例:from:no-reply@tapo.iot.com subject:請求書 など)を入力して検索します。
  2. 検索オプションから「フィルタを作成」をクリックします。
  3. 受信トレイをスキップ(アーカイブする)」 にチェックを入れ、新しく AutoSave/Invoice という名前のラベルを作成して適用します。
  4. これで、対象のメールが届いた瞬間、受信トレイを汚さずに特定のラベルフォルダへ直行するようになります。

ステップ2:GAS (Google Apps Script) の実装

  1. Googleドライブ を開き、保存先となるフォルダを新規作成して、フォルダのURLから「フォルダID」(URLの folders/ の後ろの英数字)をコピーしておきます。
  2. Google ドライブの「新規」 -> 「その他」 -> 「Google Apps Script」を開きます。
  3. デフォルトのコードを消去し、以下のJavaScriptコードを貼り付けます。
// Gmail添付ファイル自動保存システム
function saveGmailAttachmentsToDrive() {
  const TARGET_LABEL = "AutoSave/Invoice"; // Gmailの自動振り分けラベル
  const DRIVE_FOLDER_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // 保存先フォルダID
  const SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/xxx/xxx/xxx"; // SlackのWebhook URL
  
  // 対象のラベルがついた未処理のメールスレッドを検索
  const threads = GmailApp.search(`label:${TARGET_LABEL} is:unread`);
  if (threads.length === 0) {
    Logger.log("未処理のメールはありません。");
    return;
  }
  
  const folder = DriveApp.getFolderById(DRIVE_FOLDER_ID);
  let savedFiles = [];
  
  threads.forEach(thread => {
    const messages = thread.getMessages();
    messages.forEach(message => {
      // 未読メッセージのみ処理
      if (message.isUnread()) {
        const attachments = message.getAttachments();
        attachments.forEach(attachment => {
          // 添付ファイルを指定フォルダに保存
          const file = folder.createFile(attachment);
          savedFiles.push(`${message.getSubject()} -> 📄 ${file.getName()}`);
        });
        // 処理済みとして既読にする
        message.markRead();
      }
    });
  });
  
  // 保存したファイルがあればSlackに通知
  if (savedFiles.length > 0) {
    sendSlackNotification(savedFiles.join("\n"), SLACK_WEBHOOK_URL);
  }
}

// SlackへのWebhook送信関数
function sendSlackNotification(messageContent, webhookUrl) {
  const payload = {
    text: `🔔 *【Gmail自動保存アラート】*\n以下の添付ファイルをGoogleドライブに自動保存しました:\n\`\`\`${messageContent}\`\`\``
  };
  
  const options = {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(payload)
  };
  
  UrlFetchApp.fetch(webhookUrl, options);
}

ステップ3:時間主導型トリガー(定期実行)の設定

GASエディタの左メニューにある「トリガー(時計マーク)」を開き、「トリガーを追加」をクリックします。

  • 実行する関数: saveGmailAttachmentsToDrive
  • イベントのソース: 時間主導型
  • 時間ベースのトリガーのタイプ: 時間ベースのタイマー
  • 時間の目安: 1時間おき(または毎日1回などお好みで)

これで、あなたが寝ている間も、PCの電源を切っている間も、Googleのサーバーが1時間おきにメールボックスを巡回し、届いた請求書PDFをドライブへ自動で格納し、結果をSlackに送ってくれるシステムが完成しました。


よくある質問(FAQ)

Q1. 保存されたファイル名が重複して上書きされませんか?

Googleドライブの仕様上、同じファイル名で createFile を行っても上書きはされず、同じ名前のファイルが複数作成されます。もし「ファイル名に保存日時の日付を自動で付与したい」場合は、GASのコード内で file.setName(Utilities.formatDate(new Date(), "GMT+9", "yyyyMMdd_") + file.getName()) のようにリネーム処理を1行挟むことで、綺麗に整理できます。

Q2. 会社のメールアドレス(Outlookなど)でも同様のことはできますか?

はい、Outlookの場合も「Power Automate」というMicrosoft公式の自動化ツールを使用すれば、プログラミング不要で「メール受信 -> 添付ファイルをOneDriveに保存 -> Teamsに通知」というほぼ同一の自動化フローを構築可能です。

Q3. Webhook URLはどこで取得しますか?

Slackの場合は、Slackの管理画面から「Incoming Webhooks」アプリを追加し、通知を送りたいチャンネルを選択することで専用のWebhook URLを発行できます。セキュリティのため、このURLは第三者に公開しないように注意してください。


まとめ

メールの自動整理は、単なる「メールボックスの整理術」ではありません。それは、日々の「メールのダウンロード」「フォルダへの分類」という脳の単純労働(メモリ消費)を駆使するルーチンワークから自分自身を解放するための 「戦略的システム化」 です。

  • 不要な自動通知は、受信トレイをスキップさせて専用フォルダに隔離する
  • 重要な添付ファイルは、GASとAPIを使って人間を介さずにGoogleドライブへ自動保存する
  • 通知はチャットツールに集約し、メールボックスを常時監視するノイズから決別する

まずは、毎日届く不要なメールマガジンを1つ自動ミュートするルールを作るところから始めてみませんか?その小さな一歩が、あなたの脳の空きメモリを増やし、仕事の生産性を爆上げします。

もっと具体的なGASのセキュリティ対策や、Notionと組み合わせたメールタスク化に興味がある方は、関連記事の「Notion APIを活用したタスクデータベース構築」も併せてご覧ください!あなたのスマートな自動化ライフを心から応援しています。