共有のスプレッドシートは、誰かが書き足しても通知が来ません。案件台帳や申請一覧で、更新に気づくのが翌日になることもあります。
ただし「更新」には、行の追加、特定の行の変更、範囲の中の変更があり、選ぶ出来事が変わります。この記事では、その選び方と 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 のマネージャー以上の権限(ワークフローにサービス連携を付けるために必要です)
手順
完成すると、次のようなワークフローになります。

行の追加を通知する例です。
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 の IDsheet_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 フォームの記事で比べています。