はじめに
皆さん、こんにちは!日々の業務でGmailを使っていると、たくさんの添付ファイルが送られてきますよね。「あのファイルどこだっけ?」「いちいちダウンロードして、ドライブにアップロードするのが手間…」そんな悩みを抱えていませんか?
ノーコード自動化ツール「n8n」を使って、Gmailに届いた添付ファイルを自動的にGoogleドライブの指定したフォルダに保存する仕組みを構築する方法をご紹介します。
この設定を一度行えば、あとはn8nが勝手に作業してくれるので、あなたはもう添付ファイルの保存作業に時間を取られることはありません!

このワークフローでできること
- Gmailの特定条件(例:未読メール)に合致したメールを自動でチェックします。
- メールに添付されているファイルを自動的に取得します。
- 取得した添付ファイルを、Google Driveのあらかじめ指定したフォルダに自動でアップロード・保存します。
- 複数の添付ファイルがある場合でも、それぞれ個別のファイルとして保存します。
- 元のファイル名を維持したままGoogle Driveに保存できます。
- 一度設定すれば、手動での操作は不要になり、添付ファイルの保存作業を完全に自動化できます。
事前準備
設定を始める前に、以下のものを準備してください。
- n8nアカウント(クラウド版推奨)
- n8nを使ったことがない方は、n8n公式サイトからアカウント登録(クラウド版)の準備をしてください。
- Gmailアカウント
- 添付ファイルを受信するGmailアカウント。
- Google Gmail APIを利用するための設定が事前に必要になる場合があります。Google Cloud Consoleでプロジェクトを作成し、Google Gmail APIを有効にして、認証情報(OAuth 2.0 クライアントIDなど)を事前に用意したAPIを記述しておきましょう。
- Google Driveアカウント
- 添付ファイルを保存するGoogle Driveアカウント。
- Google Drive APIを利用するための設定が事前に必要になる場合があります。Google Cloud Consoleでプロジェクトを作成し、Google Drive APIを有効にして、認証情報(OAuth 2.0 クライアントIDなど)を事前に用意したAPIを記述しておきましょう。
ワークフローの作り方:ステップ・バイ・ステップ解説
それでは、実際にn8nでワークフローを作成していきましょう。
ステップ1: Gmail Triggerノードの追加と設定
最初に、Gmailに新しいメールが届いたことを検知するトリガーを設定します。
- 「+」ボタンをクリックし、「Gmail Trigger」ノードを検索して追加します。
- Credentials for Gmail OAuth2: 「Create New」をクリックし、お使いのGmailアカウントで認証を行います。画面の指示に従って連携してください。
- Poll Times: どのくらいの頻度で新しいメールをチェックするか設定します。JSONデータでは「everyMinute」(毎分)になっていますが、必要に応じて調整してください。
- Filters > Read Status: 「Unread emails only」(未読)のメールを対象とします。
- Options > Download Attachments:
true
にチェックを入れ、添付ファイルをダウンロードするようにします。

ステップ2: Gmailノード(メール取得)の追加と設定
次に、トリガーが検知したメールの詳細情報(特に添付ファイルの実データ)を取得します。
- 「Gmail Trigger」ノードの右側にある「+」から、「Gmail」ノードを検索して追加します。
- Credentials for Gmail OAuth2: ステップ2で設定したGmailアカウントの認証情報を選択します。
- Operation: 「Get」を選択します。
- Message ID:
={{ $json.id }}
と入力します。これは、前の「Gmail Trigger」ノードが取得したメールのIDを参照するという意味です。 - Options > Download Attachments:
true
にチェックを入れます。

ステップ3: Setノード(データ整理)の追加と設定
取得したメール情報から、添付ファイルの名前リストとメールIDを整理して、後の処理で使いやすくします。
- 「Gmail」ノード(メール取得)の右側にある「+」から、「Set」ノードを検索して追加します。
- Assignments: 以下の2つの設定を追加します。
- Add Assignment:
- Name:
attachments
- Value:
={{ $('Gmail取得').item.binary.keys() }}
これは、「Gmail取得」ノードで取得したバイナリデータ(添付ファイルの実体)のキー(ファイル名)をリストとして取り出す、という意味です。
注: JSONでは$('Gmail取得')
となっていますが、ご自身のノード名に合わせてください。デフォルトでは$('Gmail')
かもしれません。
- Name:
- Add Assignment:
- Name:
message_id
- Value:
={{ $json.id }}
これは、元のメールのIDを保持しておくための設定です。
注: この$json.id
は、このSetノードの入力(つまり「Gmail取得」ノードの出力)のid
を指します。
- Name:
- Add Assignment:

ステップ4: SplitOutノード(データ分割)の追加と設定
メールに複数の添付ファイルがある場合、それぞれの添付ファイルを個別に処理するためにデータを分割します。
- 「Set」ノードの右側にある「+」から、「SplitOut」ノードを検索して追加します。
- Field To Split Out:
attachments
と入力します。これは、ステップ4で作成した添付ファイル名のリストを指定しています。 - Include: 「All Other Fields」を選択します。これにより、
message_id
などの他の情報も各分割アイテムに引き継がれます。

ステップ5: Mergeノード(データ結合)の追加と設定
分割した添付ファイルの情報と、元のメールの情報を再度紐付けます。これは、各添付ファイルに対して、その添付ファイルの実データを正しくGoogle Driveにアップロードするために重要なステップです。
- 「SplitOut」ノードの右側にある「+」から、「Merge」ノードを検索して追加します。
- Mode: 「Combine」を選択します。
- Advanced:
true
にチェックを入れます。 - Merge By Fields > Values:
- Field 1:
message_id
(これはSplitOutノードからの入力、Input 1側) - Field 2:
id
(これはステップ3の「Gmail取得」ノードからの入力、Input 2側)
- Field 1:
- 接続の調整:
- 「SplitOut」ノードの出力を「Merge」ノードの Input 1 に接続します。
- ステップ3の「Gmail取得」ノードの出力を「Merge」ノードの Input 2 に接続します。(JSONデータの
connections
部分を参照)

なぜこの結合が必要?
「SplitOut」ノードでは添付ファイルの名前だけが個別のアイテムに分割されます。一方、添付ファイルの実際のデータは「Gmail取得」ノードの出力に含まれています。この「Merge」ノードで、分割された個々の添付ファイル名(message_id
で識別)と、元のメールが持っていた添付ファイルの全データ(id
で識別)を突き合わせることで、各添付ファイルが自身のバイナリデータにアクセスできるようにしています。
ステップ6: Google Driveノード(アップロード)の追加と設定
最後に、処理された添付ファイルをGoogle Driveにアップロードします。
- 「Merge」ノードの右側にある「+」から、「Google Drive」ノードを検索して追加します。
- Credentials for Google Drive OAuth2: 「Create New」をクリックし、お使いのGoogle Driveアカウントで認証を行います。画面の指示に従って連携してください。
- Input Data Field Name:
={{ $json.attachments }}
と入力します。
これは、「SplitOut」ノードで分割された個々の添付ファイル名(例: “invoice.pdf”)を参照し、Mergeノードで紐付けられたバイナリデータの中からそのファイル名のデータを取り出す、という意味です。 - Name:
={{ $binary.data.fileName }}
と入力します。これにより、元のファイル名でGoogle Driveに保存されます。 - Drive ID: 通常は「My Drive」で問題ありません。共有ドライブの場合は適切に選択してください。
- Folder ID:
- Value: ここに、Google Driveの保存先フォルダのIDを指定のフォルダーIDを記述します。
- フォルダIDの確認方法: Google Driveで保存したいフォルダを開き、ブラウザのアドレスバーのURL末尾部分(例:
https://drive.google.com/drive/folders/ココがフォルダID
)をコピーして貼り付けます。 - Mode: 「List」のままでOKです。

ワークフローの接続を確認
全てのノードが正しく接続されているか確認しましょう。
JSONデータに基づくと、接続は以下のようになります。
Gmail Trigger
→Gmail取得
Gmail取得
→添付・メッセージを設置
(Input 1)添付・メッセージを設置
→データを分割
データを分割
→結合
(Input 1)結合
→Google Driveアップロード
ワークフローのアクティブ化とテスト
全ての設定が完了したら、ワークフロー右上の「Active」トグルをオンにして有効化します。
その後、実際に添付ファイル付きの未読メールを自分宛に送信するなどして、Google Driveの指定フォルダにファイルが自動で保存されるかテストしてみましょう。
まとめ
今回は、n8nを使ってGmailの添付ファイルをGoogle Driveに自動保存するワークフローの作成方法を解説しました。
この設定により、
- 添付ファイル保存の手間がなくなる
- ファイルの保存漏れを防げる
- 時間を有効活用できる
といったメリットがあります。
最初は少し設定が多く感じるかもしれませんが、一度作ってしまえば非常に強力な自動化ツールとして活躍してくれるはずです。
ぜひ、今回の記事を参考に、あなたの業務効率化に役立ててくださいね!
AIエージェント導入を検討中の方!
まずは無料でご相談ください!
・業務改善でAIを使用したい
・AIで業務効率を上げたい
・どのAIを導入すればいいかわからない
・技術的サポートが必要な方