取引先や社内の担当者がドライブに資料を置いても、自分から見に行かないと気づけません。受け取りフォルダの確認を毎日の作業にしているチームもあります。
この記事では、特定のフォルダにファイルが追加されたら Slack のチャンネルへ通知する手順を説明します。
結論
Samurai App のワークフローに「サービス連携」で Google Drive をつなぎ、次のどちらかの出来事で起動します。
| 出来事 | 向いている場面 |
|---|---|
「File Created」(GOOGLEDRIVE_FILE_CREATED_TRIGGER) |
マイドライブの 1 つのフォルダを見る。folder_id の欄がある |
「New File Matching Query」(GOOGLEDRIVE_NEW_FILE_MATCHING_QUERY_TRIGGER) |
共有ドライブを見る。検索式と、共有ドライブ用の指定がある |
連携先を定期的に見に行く方式なので、動き出すまで最大 15 分かかることがあります。送信は「通知先へ送る」のステップで、モデルを呼びません。
できること・できないこと
- 検索式で絞れます。
queryに Google ドライブの検索式を書けます。名前、種類、親フォルダで絞り込めます - フォルダ自体の作成でも起動します。 除外するには
mimeType != 'application/vnd.google-apps.folder'を足します - 別の場所から移動してきたファイルは通知されない場合があります。 「New File Matching Query」は、作成日時が前回の確認より新しいものだけを返します。移動では作成日時が変わらないためです。移動も拾いたいときは、「Google Drive Changes」(
GOOGLEDRIVE_GOOGLE_DRIVE_CHANGES)など別の出来事を確認してください - ファイルの更新は別の出来事です。 更新を知りたいときは「File Updated」(
GOOGLEDRIVE_FILE_UPDATED_TRIGGER)を使います。content_onlyをオンにすると中身の更新だけで起動しますが、Google ドキュメントやスプレッドシートはこの指定では起動しません - 費用は 1 件受けるごとに約 0.5 円かかります。 まとめて 100 個のファイルを置くと、その分だけ増える可能性があります。有効にできるサービス連携は 20 個までです
用意するもの
- 見張るフォルダを読める Google アカウント
- 投稿先チャンネルの Slack の Incoming Webhook の URL
- Samurai App のマネージャー以上の権限(ワークフローにサービス連携を付けるために必要です)
手順
完成すると、次のようなワークフローになります。

1. 通知先を登録する

Slack のアプリ設定で「Incoming Webhooks」を有効にし、「Add New Webhook to Workspace」からチャンネルを選んで URL を作ります。Samurai App の「設定」→「通知」の「通知先」に名前と URL を登録し、「テスト送信」で確認します。
2. Google Drive を接続する
「コネクタ」画面の「コネクタ」タブで Google Drive の「追加」を押し、「標準連携アプリで追加」を選んでサインインします。
3. フォルダの ID を控える
ブラウザでフォルダを開くと、URL の folders/ のあとに ID が表示されます。
4. ワークフローを作って公開する
「ワークフロー」の「作成」から「新規作成」を選びます。ステップを選んでいない状態の「設定」にある「ワークフローの入力」で「入力の項目を追加」を押し、名前を event、種類を「項目の組」にします。
「通知先へ送る」のステップを置いて通知先を選び、「本文」には、まず次の 1 行だけを書きます。
ファイルが追加されました: {{input.event.file}}
ファイルの情報が丸ごと JSON の形で本文に入ります。手順 7 で実際の項目を確認してから、読みやすく書き直します。
「保存」のあと、「バージョン」タブで「バージョン N を公開」を押します。
5. サービス連携を付ける
「トリガー」タブの「サービス連携を追加」を押します。「どのサービスを監視するか」で Google Drive の接続を選び、「どうなったら動かすか」で「File Created」を選びます。
「絞り込み」に次を入れて登録します。
folder_id: 手順 3 の IDquery:mimeType != 'application/vnd.google-apps.folder'(フォルダの作成を除く場合)
6. ファイルを置いて確認する
フォルダに新しくファイルをアップロードし、15 分ほど待ちます。「実行」タブの「最近の実行」に「出来事で起動」の行が増え、Slack に届けば動いています。
7. 本文を読みやすくする
「最近の実行」の行を開き、入力の中の file の項目名を確認します。たとえば name が入っていれば、次のように書き直します。
ファイルが追加されました: {{input.event.file.name}}
ファイルへのリンクなど、その他の項目も、ここに実際に出ている項目だけを書きます。届かない項目を書くと、本文に空欄が入るのではなく、ステップが失敗します。書き直したら「保存」し、もう一度公開します。
絞り方の例
query は Google ドライブ API の検索式です。and でつなげます。
| 絞りたいもの | 検索式 |
|---|---|
| 特定のフォルダの直下で、ゴミ箱以外 | 'フォルダの ID' in parents and trashed = false |
| 名前に「請求書」を含む | name contains '請求書' |
| PDF だけ | mimeType = 'application/pdf' |
| フォルダ以外 | mimeType != 'application/vnd.google-apps.folder' |
「New File Matching Query」では folder_id の欄が無いので、in parents の検索式でフォルダを指定します。
動かないとき
共有ドライブのファイルで起動しない
「New File Matching Query」を使い、corpora に drive、driveId に共有ドライブの ID を入れます。includeItemsFromAllDrives と supportsAllDrives もオンにします。Google の資料でも、共有ドライブのフォルダを検索するときはこの 2 つの指定が必要とされています。
検索式で登録できない、または起動しない
文字列は単一引用符で囲みます。全角の引用符や、フォルダ名を ID の代わりに書いていないかを確認します。接続した Google アカウントがそのフォルダを読めない場合も起動しません。
下の階層のフォルダのファイルが通知されない
'ID' in parents で指定するのは、そのフォルダを親に持つファイルです。階層ごとに見るときは、フォルダごとに登録を増やすか、検索式に or で親フォルダを足します。
実行が失敗し、「$ref '…' の値がありません」と出る
本文に書いた項目が、届いた内容にありません。手順 7 のとおり、「最近の実行」の入力で実際の項目名を確認します。
よくある質問
すぐに通知できますか
サービス連携は見に行く方式なので、最大 15 分遅れます。
ファイルの中身も Slack に載せられますか
「AI で生成」や「AI ボット」のステップで要約を作り、本文に入れる構成にすることはできます。その場合はモデルを呼ぶので、利用料がかかります。チャンネルの全員に見えることも先に確認してください。