スプレッドシートと Slack を連携して更新を自動で通知する方法|行の追加と変更

共有のスプレッドシートは、誰かが書き足しても通知が来ません。案件台帳や申請一覧で、更新に気づくのが翌日になることもあります。

ただし「更新」には、行の追加、特定の行の変更、範囲の中の変更があり、選ぶ出来事が変わります。この記事では、その選び方と Slack へ送る手順を説明します。

結論

Samurai App のワークフローに「サービス連携」で Google Sheets をつなぎ、次のどれかの出来事で起動します。いずれも連携先を定期的に見に行く方式で、動き出すまで最大 15 分かかることがあります。

知りたいこと 出来事 指定するもの
行が増えた 「New Rows in Google Sheet」(GOOGLESHEETS_NEW_ROWS_TRIGGER) スプレッドシートの ID、シート名、監視を始める行
決まった 1 行が変わった 「Spreadsheet Row Changed」(GOOGLESHEETS_SPREADSHEET_ROW_CHANGED_TRIGGER) スプレッドシートの ID、行を探す文字、探す範囲
決めた範囲の値が変わった 「Cell Range Values Changed」(GOOGLESHEETS_CELL_RANGE_VALUES_CHANGED_TRIGGER) スプレッドシートの ID、範囲

多くの業務で使うのは「New Rows」です。送信のステップは「通知先へ送る」だけで済み、モデルを呼びません。

できること・できないこと

  • 「どの行でも、変わったらその行だけ通知」は 1 つの出来事では作れません。 「Spreadsheet Row Changed」が見るのは、query に完全一致するセルがある 1 行です。たとえば「案件 A-102」の行を見る、という使い方になります
  • 範囲の監視では、どのセルが変わったかは届きません。 「Cell Range Values Changed」で届くのは、変更前の previous_values と変更後の current_values です。範囲が広いと本文も長くなるので、見たい列に絞ります
  • 「Spreadsheet Row Changed」は、追加と削除でも起動します。 change_type が created、updated、deleted のどれかで届きます
  • 列の見出しは届きません。 「New Rows」の row_data は、行の値を並べた一覧です
  • 費用は 1 件受けるごとに約 0.5 円かかります。 有効にできるサービス連携は 20 個までです

用意するもの

  • 通知したいスプレッドシートを読める Google アカウント
  • 投稿先チャンネルの Slack の Incoming Webhook の URL
  • Samurai App のマネージャー以上の権限(ワークフローにサービス連携を付けるために必要です)

手順

完成すると、次のようなワークフローになります。

スプレッドシートの追加を Slack へ送るワークフローの編集画面

行の追加を通知する例です。

1. 通知先を登録する

「設定」の「通知」にある通知先の登録画面

Slack のアプリ設定で「Incoming Webhooks」を有効にし、「Add New Webhook to Workspace」からチャンネルを選んで URL を作ります。Samurai App の「設定」→「通知」の「通知先」に名前と URL を登録し、「テスト送信」で確認します。

2. Google Sheets を接続する

「コネクタ」画面の「コネクタ」タブで Google Sheets の「追加」を押し、「標準連携アプリで追加」を選んでサインインします。

3. スプレッドシートの ID を控える

スプレッドシートの URL の /d/ と /edit の間の文字列が ID です。

4. ワークフローを作って公開する

「ワークフロー」の「作成」から「新規作成」を選びます。ステップを選んでいない状態の「設定」にある「ワークフローの入力」で「入力の項目を追加」を押し、名前を event、種類を「項目の組」にします。

「通知先へ送る」のステップを置いて通知先を選び、「本文」に次を書きます。

{{input.event.sheet_name}} の {{input.event.row_number}} 行目が追加されました
{{input.event.row_data}}

row_data は ["A-102","山田","受注"] のように JSON の形で本文に入ります。

「保存」のあと、「バージョン」タブで「バージョン N を公開」を押します。

5. サービス連携を付ける

「トリガー」タブの「サービス連携を追加」を押します。「どのサービスを監視するか」で Google Sheets の接続を選び、「どうなったら動かすか」で「New Rows in Google Sheet」を選びます。

「絞り込み」に次を入れて登録します。

  • spreadsheet_id: 手順 3 の ID
  • sheet_name: 監視するシートの名前
  • start_row: 見出しが 1 行のときは 2

6. 行を足して確認する

行を 1 つ足し、15 分ほど待ちます。「実行」タブの「最近の実行」に「出来事で起動」の行が増え、Slack に届けば完了です。行を開くと、実際に届いた入力を確認できます。

特定の列だけを読みやすく送る

列を順番で書くこともできます。{{input.event.row_data.0}} が 1 列目、{{input.event.row_data.1}} が 2 列目です。

ただし、Google の Sheets API では、行の末尾の空のセルは読み取りの結果から省かれます。同じ形で届く行では、空だった末尾の列を番号で書いた本文が「$ref '…' の値がありません」で失敗します。毎回必ず埋まる列だけを番号で書き、空になりうる列を含めるときは「コード」のステップを挟みます。

「渡す値」に row として input.event.row_data を渡し、次のように書きます。

const [id, owner, status, memo] = inputs.row;
return `案件: ${id ?? ""}\n担当: ${owner ?? ""}\n状況: ${status ?? ""}\nメモ: ${memo ?? ""}`;

動かないとき

行を足しても起動しない

まず 15 分待ちます。それでも起動しないときは、spreadsheet_id に URL 全体を入れていないか、sheet_name の表記がシートのタブと同じかを確認します。公開していないバージョンでは起動しません。

「Spreadsheet Row Changed」が動かない

query は、セルの中身全体と完全に一致する値です。部分一致では見つかりません。range は Sheet1!A:Z の形で書きます。シート名だけの指定は使えず、名前に空白があるときは 'My Sheet'!A:Z のように単一引用符で囲みます。

「Cell Range Values Changed」の範囲で失敗する

range も同じ書き方です。シート名に空白や記号があるときは、単一引用符で囲みます。

行をまとめて貼り付けたら通知と費用が増えた

出来事は 1 行分の形で届きます。一度に大量に貼り付ける運用がある場合は、先に数行で試し、届く件数を確認します。

よくある質問

特定の値のときだけ通知できますか

できます。「通知先へ送る」の前に「条件分岐」を置きます。ただし、費用は出来事が届いた時点でかかるので、条件で止めても減りません。

セルを編集してすぐに通知できますか

サービス連携は見に行く方式なので、最大 15 分遅れます。

Google フォームの回答シートにも使えますか

使えます。回答が行として増えるので「New Rows」で受けられます。遅れを避ける方法はGoogle フォームの記事で比べています。

関連する使い方

出典

関連する機能業務ツールとAIの連携 —— MCP接続と外部チャットSamurai App は業務ツールと AI を MCP 接続でつなぎます。会計や人事の SaaS を、チャットからその人の権限で操作できます。Slack や Teams から呼べて、外部の AI からも MCP で使えます。

ほかの自動化の例

Slack の連携と自動化の方法をすべて見る

活用術の記事一覧へ

日々の仕事が集まり、つながり、会社の力になる。

資料請求Samurai App を開く

デモを見る資料請求