見出し画像

【プログラミングが初めての人でもできる!】メール添付を自動でフォルダ保存する方法

メール添付、手動で保存していませんか?

「取引先からメールが来た。添付ファイルを右クリックして、フォルダを選んで、ダウンロードして…」

この作業、1日に何回やっていますか?

私は建築業界で図面のやり取りをしているのですが、多い日は1日に100件以上のメールを処理します。
私が所属するチームには事務員さんが一人いて、添付図面の保存などをやってくれるのですが、事務員さんが処理するファイルは1日に100個を超えることも。
もちろん、私も自分で保存が必要なファイルもありますが、添付ファイルを保存するときは、その都度、手動で保存していました。
私は自分のファイルを保存するだけでもめんどうなのに、事務員さんはチーム全体の添付ファイルを保存しなきゃいけない。
さらに事務員さんはPC操作がさほど得意ではないので、メールが多いと図面ファイルを保存するだけでも一苦労。

「これ、なんとかならないかな?」

そう思って調べて見つけたのが GAS(Google Apps Script)でした。
※GAS=ガスと読みます。Googleが提供するプログラム実行環境です。


この記事でできるようになること

Gmailに届いた添付ファイルを、Googleドライブのフォルダに自動保存

所要時間は15分程度。プログラミング経験ゼロでも大丈夫です。

コピペするだけで動きます。

画像付きで一歩ずつ説明するので、迷うことはありません。
私もGAS初心者でしたので、分かりにくそうな部分は画像をたっぷり用意しました!


準備するもの

始める前に、以下を確認してください。

  • Googleアカウント(Gmailを使っている人なら持っています)

  • パソコン(スマホのブラウザでも一応できますが、画面が小さすぎてかなり大変です)

  • 15分ほどの時間

準備ができたら、始めましょう!


Step 1. Googleドライブにフォルダを作る

まず、添付ファイルの保存先を作ります。

  1. Googleドライブを開く(https://drive.google.com

  2. 左上の「新規」→「フォルダ」をクリック

まずは「新規」をポチッ

3. フォルダ名をつける(例:「メール添付ファイル自動保存」)

💡 ポイント: フォルダ名は日本語でOKです!


Step 2. GASの画面を開く

次に、プログラムを書く画面を開きます。

  1. ブラウザのアドレスバーに `script.google.com` と入力

  2. 新しいプロジェクト」をクリック

💡 おすすめ: 今後何度も使うので、このページをブックマークしておきましょう!

💡 GASって何?
Googleが無料で提供しているプログラム実行環境です。
難しいことは後で覚えればOK。今は「こういうのがあるんだ」くらいで大丈夫です。

💡 「ログインしてください」と出たら?
Googleアカウントでログインしてください。


Step 3. プロジェクトに名前をつける

  1. 左上の「無題のプロジェクト」をクリック

 2. 名前を入力(例:「メール添付ファイル自動保存」)

名前は好きにつけてOK

 3. 「名前を変更」をクリック

💡 なぜ名前をつけるの?
後から「あのプログラムどこだっけ?」とならないためです。


Step 4. コードをコピペする

ここがメインの作業です。

  1. 最初から書いてあるコードを全部消す(`Ctrl + A`で全選択→`Delete`キー)

思い切って全部消しましょう

 2. 下のブラックの枠内のコードを全部コピーする

⚠️ コピーするのはブラックの枠の中だけです!
   `function saveAttachments() {`  から、最後の  `}` まで

function saveAttachments() {
  // ↓↓↓ この下の4つを書き換えてください ↓↓↓
  const fromAddress = "example@example.com";  // この人からのメールを対象
  const folderId = "ここにフォルダIDを入れる";  // 保存先フォルダのID
  const afterDate = "2026/02/01";  // この日以降のメールを対象
  const labelName = "DL済";  // 処理済みのメールにつけるラベル名
  // ↑↑↑ ここまで ↑↑↑

  // ラベルを取得(なければ作成)
  let label = GmailApp.getUserLabelByName(labelName);
  if (!label) {
    label = GmailApp.createLabel(labelName);
  }

  // メールを検索(指定日以降、ラベルなしのもののみ)
  const query = "from:" + fromAddress + " has:attachment after:" + afterDate + " -label:" + labelName;
  const threads = GmailApp.search(query);
  
  // 保存先フォルダを取得
  const folder = DriveApp.getFolderById(folderId);
  
  // 各メールの添付ファイルを保存
  for (const thread of threads) {
    const messages = thread.getMessages();
    for (const message of messages) {
      const attachments = message.getAttachments();
      for (const attachment of attachments) {
        // ファイルをフォルダに保存
        folder.createFile(attachment);
      }
    }
    // スレッドにラベルをつける(処理済みの印)
    thread.addLabel(label);
  }
}

💡 コードの意味がわからなくてもOK!
まずは動かしてみましょう。理解は後からでOKです。

💡 セキュリティが気になる方へ
メールアドレスやフォルダIDをコードに直接書くのが気になる場合は、「スクリプトプロパティ」に保存する方法もあります。これは発展編で解説予定です!(GASプロジェクトはデフォルトで非公開なので、個人利用であればこのままで問題ありません)

 3.  1.でコードを消したところに 2.でコピーしたコードを貼り付ける

貼り付けたあとはこんな感じ

Step 5. 自分用に設定を変更する

コードの4箇所を、自分用に書き換えます。

5-1. 送信元アドレスを変更

コードの3行目の `"example@example.com"` の部分を、自動保存したい相手のメールアドレスに変更します。

例:

const fromAddress = "tanaka@construction.co.jp";

💡 複数の送信元を設定したい場合
カッコで囲んで `OR` でつなげます。
⚠️ 注意: `OR` の前後には半角スペースが必要です!

2人の場合

const fromAddress = "(tanaka@example.com OR suzuki@example.com)";

3人以上の場合(`OR` を増やしていく):

const fromAddress = "(tanaka@example.com OR suzuki@example.com OR yamada@example.com)";


5-2. フォルダIDを取得して設定

  1. Step 1で作ったGoogleドライブのフォルダを開く

  2. URLを見る

  3. URLの最後の部分がフォルダID

https://drive.google.com/drive/folders/XXXXXXXXXXXXXXX
                                      ↑この部分がフォルダID

⚠️ よくある間違い
URLを全部コピーしてしまう → IDの部分だけでOKです!

フォルダIDをコピーしたら、コードの4行目の `"ここにフォルダIDを入れる"` の部分を書き換えます。

例:

const folderId = "1aMyvhxjQr-56Rv1d6WHY2cHJMURGvE0V";

5-3. 適用開始日を設定

コードの5行目の `"2026/02/01"` の部分を、いつからのメールを対象にするか設定します。

💡 この日付は何?
ここで設定した日付以降のメールだけが処理対象になります。
例えば `"2026/02/01"` と設定すると、2026年2月1日以降に届いたメールの添付ファイルだけが保存されます。

⚠️ 重要:古い日付にしすぎないで!
例えば `"2020/01/01"` のように古い日付を設定すると、過去数年分のメールが一気に処理され、数百件のファイルがダウンロードされてしまう可能性があります!
初めて実行するときは、今日か昨日の日付を設定するのが安全です。

例(今日が2026年2月8日の場合):

const afterDate = "2026/02/08";

日付の書式は `"年/月/日"` です。スラッシュ(`/`)で区切ってください。

5-4. ラベル名を設定(任意)

コードの6行目の `"DL済"` は、処理済みのメールにつけるラベル名です

💡 なぜラベルをつけるの?
このスクリプトは、一度処理したメールに「DL済」というラベルをつけて、次回以降は処理をスキップするようにしています。
これにより、同じ添付ファイルが何度もダウンロードされるのを防ぎます。

ラベル名は自由に変更できます。例えば:

const labelName = "添付保存済み";

💡 ラベルが存在しない場合は、自動で作成されます。Gmailで事前に作成しておく必要はありません。


Step 6. 保存する

キーボードで `Ctrl + S` を押す(Macは `Cmd + S`)

または、上の「保存」ボタン(💾マーク)をクリックします。

このアイコンがフロッピーディスクだと知らない世代が増えてきている…

Step 7. 実行してみる

  1. 上の「実行」ボタン(▶マーク)をクリック

 2. 初回は「承認が必要です」と出ます → これは正常です! 


Step 8. 権限を許可する(初回のみ)

⚠️ ここが一番ハマりやすいポイント!

  1. 権限を確認」をクリック

ちょっと不安になりますが、ポチっといきましょう

 2. 自分のGoogleアカウントを選択 

 3.「詳細」をクリック(←ここが見落としやすい!)

 4.「〇〇(安全ではないページ)に移動」をクリック


 5. 「すべて選択」にチェックを入れる

 6. 「続行」をクリック

ちょっと危険な雰囲気が漂う画面ですが、えいやっ!とポチリます。

⚠️ 画面が英語の場合
日本語設定でも英語で表示されることがあります。

⚠️ 画面が英語の場合
日本語設定でも英語で表示されることがあります。
 ・「詳細」→「Advanced
 ・「〇〇(安全ではないページ)に移動」→「Go to 〇〇 (unsafe)
 ・「続行」→「Allow

💡 なぜ「安全ではない」と表示されるの?
自分で作ったプログラムはGoogleの審査を受けていないからです。
自分のアカウントで、自分のために作ったものなので、心配いりません!


Step 9. 動作確認

  1. Googleドライブのフォルダを開く

  2. 添付ファイルが保存されていたら成功! 🎉

 3. メールにラベルがついている

対象のメールには、5-4で説明したラベルがついています。確認してみましょう。

うまくいかない場合のチェックリスト

ファイルが保存されていない場合、以下を確認してください:

  • ▢ 対象のメールアドレスから未読メールが来ているか?

  • ▢ そのメールに添付ファイルがついているか?

  • ▢ フォルダIDは正しくコピーできているか?


【発展1】自動で定期実行するには?

「でも毎回手動で実行するのは面倒…」

という方のために、10分ごとや、毎日1回など、自動で実行する方法もあります。これは「トリガー」という機能を使います。
詳しくは次回の記事で解説しますので、お楽しみに!


【発展2】ラベルで対象メールを絞り込む

今回は「特定の送信元からのメール」を対象にしましたが、Gmailのラベルを使って対象を絞り込む方法もあります。

💡 ラベルの概要
Gmailの「ラベル」は、Outlookでいう「フォルダ」に似た機能です。
ただし、1通のメールに複数のラベルをつけられるのが大きな違い。
メールを移動させるのではなく、「タグ」をつけて分類するイメージです。

例えば「保存対象」というラベルをつけたメールだけを処理する…といった使い方ができます。
こちらも今後の記事で解説予定なので、お楽しみに!


まとめ

今日やったこと:

  1. ✅ GASの画面を開いた

  2. ✅ コードをコピペした

  3. ✅ 自分用に設定を変えた

  4. ✅ 実行して動いた!

たった15分で、メール添付の自動保存ができるようになりました。

「プログラミングって難しそう…」と思っていた方も、意外と簡単だったのではないでしょうか?


次回予告

次回は「完全自動化!トリガー設定の方法」を解説します。

これを設定すれば、実行ボタンを押さなくても自動で添付ファイルが保存されるようになります。

さらに今後は「ラベルの活用法」や「PC版Googleドライブ」の活用法を紹介予定。Googleドライブのフォルダをパソコンのエクスプローラーから直接開けるようになりますよ!

よかったらフォローしてくださいね 🙌



いいなと思ったら応援しよう!