- 動作確認日:2026-10-01
- n8nのバージョン:2.41.3(Docker、セルフホスト)
① 結論:このワークフローでできること
Googleドライブの決めたフォルダに新しいファイルが追加されたら、そのファイル名とリンクを、Slackのチャンネルに知らせます。
- 起動には、n8nの「Google Drive Trigger」を使います。n8nが1分ごとにドライブを確かめに行くしくみ(ポーリング)なので、n8nを
localhostで動かしていても使えます。 - 見張るのは、指定した1つのフォルダの中だけです。その中のサブフォルダの変化では動きません。
- ファイルの持ち主や、最後に編集した人の名前・メールアドレスは、Slackには送りません。
- 使う認証情報(Credentials)は、Google DriveとSlackの2つです。
② 完成イメージ

テスト用に n8nテスト というフォルダを作り、ワークフローを有効にしてから、フォルダの中にGoogleドキュメントを作りました。Slackのチャンネルに、次のような通知が届きます。

送ったメッセージは、次のとおりです(実際の内容です。Slackでは、ファイル名がそのファイルへのリンクになります)。
:file_folder: フォルダに新しいファイルが追加されました(10/01 13:10)
*<ファイルのURL|n8nテスト_議事録>*
ただし、1回目は、すぐには届きませんでした(⑤で説明します)。実際の流れは、次のとおりです。
| 時刻 | できごと |
|---|---|
| 13:08 | ワークフローを有効にした |
| 13:10 | フォルダに「n8nテスト_議事録」を作った |
| 13:13 | まだ1回も実行されていなかった |
| 13:15 | ワークフローを無効にしてから、有効にし直した。その場で確認が動き、「n8nテスト_議事録」をSlackに送った |
| 13:18 | フォルダに「n8nテスト_資料2」を作った |
| 13:19 | 1分ごとの確認で見つけて、Slackに送った |
有効にし直したあとは、ファイルを作ってから1分ほどで通知が届きました。
実行したときの件数の流れは、次のとおりです(1回の実行につき、ファイル1件)。
| ノード | 出てきた件数 |
|---|---|
| Google Drive Trigger | 1 |
| Make Message(Code) | 1 |
| Slack | 1 |
動かしてみて気づいた点として、Google Drive Triggerの出力には、40近くの項目が入っていました。その中には、owners(持ち主)や lastModifyingUser(最後に編集した人)のように、名前やメールアドレスが入る項目もあります。今回は、ファイル名、リンク、作成日時だけを使っています。
③ 使うノードと必要なもの
必要なもの
- n8n(今回はバージョン2.41.3をDockerで動かしました)
- Googleドライブと、見張るフォルダのID
- 認証情報:Google Drive OAuth2 API(Google Cloudで作ったOAuthクライアントを使います。Google CloudでGoogle Drive APIを有効にしておきます)
- Slackのワークスペースとチャンネル、Slackアプリの「Bot User OAuth Token」、チャンネルID
- 認証情報:Slack API
フォルダのIDは、ブラウザでそのフォルダを開いたときのURL(https://drive.google.com/drive/folders/ のあとの文字列)で確かめられます。Slackアプリの作り方は、「n8nでブログの新着記事をSlackに通知するワークフロー」の記事で説明しています。
使うノード
| ノード | 役割 | 設定したこと |
|---|---|---|
| Google Drive Trigger | フォルダに新しいファイルが入ったら動く | Poll Times:Every Minute、Trigger On:Changes Involving a Specific Folder、Folder:By ID、Watch For:File Created |
| Code(Make Message) | Slackに送る文章を作る | 下のコード |
| Slack | メッセージを送る | Send Message To:Channel、Channel:By ID、Message Text:{{ $json.text }}、Include Link to Workflow:オフ |

Google Drive Triggerの画面には、「Changes within subfolders won’t trigger this node」(サブフォルダの中の変化では動きません)という注意書きが出ます。フォルダの中にさらにフォルダを作って整理している場合は、見張りたいフォルダごとにトリガーを用意する必要があります。

Make Messageでは、次の処理をしています。
// 追加されたファイルを、Slackに送る文章にする
const esc = s => (s || '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return $input.all().map(i => {
const f = i.json;
const at = f.createdTime ? DateTime.fromISO(f.createdTime).setZone('Asia/Tokyo').toFormat('MM/dd HH:mm') : '';
const name = f.webViewLink ? `<${f.webViewLink}|${esc(f.name)}>` : esc(f.name);
return { json: { text: `:file_folder: フォルダに新しいファイルが追加されました(${at})\n*${name}*` } };
});
webViewLinkは、ブラウザでそのファイルを開くためのURLです。Slackの<URL|表示する文字>の書き方で、ファイル名をリンクにしています。createdTime(UTC)を、日本時間に直しています。- 1分の間に複数のファイルが入ったときは、ファイルごとに1通ずつ送ります。
④ JSON
n8nの公開API(POST /api/v1/workflows)でこのJSONからワークフローを作成し、有効化してから、上の結果を確認しました。
使うときは、次の箇所を自分の環境に合わせて書き換えてください。
YOUR_FOLDER_ID:見張るフォルダのIDYOUR_GOOGLE_DRIVE_CREDENTIAL_ID:n8nに登録したGoogle Driveの認証情報のIDYOUR_SLACK_CREDENTIAL_ID:n8nに登録したSlack APIの認証情報のIDYOUR_CHANNEL_ID:送り先のチャンネルID
読み込んだあとに、ノードの画面で認証情報を選び直しても大丈夫です。
{
"name": "test-drive-slack",
"nodes": [
{ "parameters": {
"pollTimes": { "item": [ { "mode": "everyMinute" } ] },
"triggerOn": "specificFolder",
"folderToWatch": { "__rl": true, "value": "YOUR_FOLDER_ID", "mode": "id" },
"event": "fileCreated",
"options": {} },
"id": "b1600000-0001-4000-8000-000000000001", "name": "Google Drive Trigger", "type": "n8n-nodes-base.googleDriveTrigger", "typeVersion": 1, "position": [0, 0],
"credentials": { "googleDriveOAuth2Api": { "id": "YOUR_GOOGLE_DRIVE_CREDENTIAL_ID", "name": "Google Drive account" } } },
{ "parameters": { "jsCode": "// 追加されたファイルを、Slackに送る文章にする\nconst esc = s => (s || '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\nreturn $input.all().map(i => {\n const f = i.json;\n const at = f.createdTime ? DateTime.fromISO(f.createdTime).setZone('Asia/Tokyo').toFormat('MM/dd HH:mm') : '';\n const name = f.webViewLink ? `<${f.webViewLink}|${esc(f.name)}>` : esc(f.name);\n return { json: { text: `:file_folder: フォルダに新しいファイルが追加されました(${at})\\n*${name}*` } };\n});" },
"id": "b1600000-0002-4000-8000-000000000002", "name": "Make Message", "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [220, 0] },
{ "parameters": {
"select": "channel",
"channelId": { "__rl": true, "value": "YOUR_CHANNEL_ID", "mode": "id" },
"text": "={{ $json.text }}",
"otherOptions": { "includeLinkToWorkflow": false } },
"id": "b1600000-0003-4000-8000-000000000003", "name": "Slack", "type": "n8n-nodes-base.slack", "typeVersion": 2.3, "position": [440, 0],
"webhookId": "b1600000-bbbb-4000-8000-000000000003",
"credentials": { "slackApi": { "id": "YOUR_SLACK_CREDENTIAL_ID", "name": "Slack account" } } }
],
"connections": {
"Google Drive Trigger": { "main": [[{ "node": "Make Message", "type": "main", "index": 0 }]] },
"Make Message": { "main": [[{ "node": "Slack", "type": "main", "index": 0 }]] }
},
"settings": { "executionOrder": "v1" }
}
⑤ つまずきポイントと対処
有効にしたのに、1分ごとの確認が始まらなかった
- 起きたこと:ワークフローを有効にして、フォルダにファイルを作ったのに、5分たっても1回も実行されませんでした。n8nのログにも、エラーは出ていませんでした。
- 確かめたこと:Google DriveのAPIで、同じ条件(このフォルダの中で、有効にした時刻より後に作られたファイル)を直接検索すると、ファイルは見つかりました。条件は正しく、1分ごとの確認そのものが動いていないようでした。
- 対処:ワークフローを一度無効にしてから、もう一度有効にしました。すると、その場で確認が動いて、待っていたファイルを見つけました。そのあとは、1分ごとの確認も動き続けました。
- 原因はわかっていません。同じ日に同じ方法で有効にしたGmail Triggerは、1回目から動いていました。有効にしたあと、しばらくしても動かないときは、有効にし直してみてください。
有効にし直しても、待っていたファイルを取りこぼさなかった
Google Drive Triggerは、「最後に確かめた時刻」をワークフローに保存していて、次の確認では、その時刻より後に作られたファイルを探します。今回は、最初に有効にした時刻(13:08)が残っていたので、有効にし直したときに、13:10に作ったファイルも見つかりました。
⑥ 応用アイデア
どれも、まだ試していないアイデアです。
- Watch Forを「File Updated」にして、ファイルが更新されたときに知らせる
- 共有フォルダに置いて、チームの誰かがファイルを追加したら知らせる
- 追加されたファイルの名前と日時を、Google Sheetsにも記録する
- 通知先を、DiscordやLINE、Telegramに替える
