JETCHECKER LINK データ自動送信 受信シート セットアップ手順書(rev.4)

JETCHECKER LINK データ自動送信
受信シート セットアップ手順書 rev.4

対象: 受信用の Google スプレッドシートを準備する方(受信側の担当者・シートの所有者。複数店舗を束ねる本部でも、1店舗の自店用でもかまいません)。

サイト掲載版: この文書は、最新版の JETCHECKER LINK に同梱している受信シート セットアップ手順書(rev.4)と同じ内容です(掲載 2026-09-16)。ソフトウェアの改訂に合わせて更新します。 データ自動送信の機能は JETCHECKER LINK v1.40.0 以降でお使いいただけます。
正式な内容は、お使いのバージョンの JETCHECKER LINK に同梱されている文書です(業務画面のヘルプメニューから開けます)。本ページは最新版の写しのため、古いバージョンではまだ使えない機能の記述を含むことがあります。
導入前のご相談や連携についてのご質問は、JETCHECKER LINK 製品ページの「お問い合わせ」からお気軽にお寄せください。

JETCHECKER LINK の「データ自動送信」を使うと、各店舗の計数機で数えた 計数データが、受信用の Google スプレッドシートに自動で届きます(複数店舗の記録を1枚に集めることも、 自店の記録を貯めることもできます)。 本書は、その受け取り側のスプレッドシートを準備する手順です。 所要時間の目安は 15分。プログラミングの知識は不要です (用意されたスクリプトを貼り付けるだけです)。

店舗側(JETCHECKER LINK 側)の設定は、本書の 6章 にまとめています (店舗へ渡すものと、店舗の画面での入力手順。店舗の『取扱説明書』の「データ自動送信」の章にも 同じ手順があります)。

図の画面は Google の仕様変更で多少変わることがあります。また、 アカウントの言語設定によっては一部の画面が英語で表示されます (本書の図も一部は英語表示の例です。日本語の場合のボタン名を併記しています)。

1. 必要なもの

  • Google アカウント(スプレッドシートの所有者になるアカウント。 会社の Google Workspace アカウントでも、個人の Gmail アカウントでもかまいません)
  • 受信スクリプト(テキストファイル) — 次のどちらかで入手します:
    • JETCHECKER LINK の配布キットに同梱の webhook_receiver.gs
    • 店舗の JETCHECKER LINK 業務画面 → ヘルプ → 取扱説明書 → 「データ自動送信」の章にあるサンプルコードのリンク(店舗の担当者に頼んで ファイルを送ってもらうこともできます)
  • トークン(合い言葉となる文字列)を1つ決めておく — 店舗との接続の確認に使います。長め(12文字以上)の推測されにくい文字列を 自分で決めてください(例: demo-4f8k-2210 のような形式。 この例をそのまま使わないでください)

2. スプレッドシートを作る

  1. ブラウザで sheets.google.com を開き、 「空白のスプレッドシート」で新規作成します
  2. 左上の「無題のスプレッドシート」をクリックして、分かりやすい名前を 付けます(例: JETCHECKER 計数データ(本部))
新規スプレッドシート。左上に名前を付けた状態
図1 新規スプレッドシートに名前を付けたところ

3. 受信スクリプトを設置する

  1. メニューの「拡張機能」→「Apps Script」を開きます(図2)。 コードの編集画面が新しいタブで開きます
  2. 編集画面にはじめから入っている数行(function myFunction() {…})を すべて削除し、受信スクリプトの中身をまるごと貼り付けます
  3. コードの上の方にある
    const TOKEN = 'ここにトークンを入れる';
    の行を、1章で決めたトークンに書き換えます(図3)
  4. 左上の「無題のプロジェクト」をクリックして名前を付け (例: JETCHECKER 受信)、 Ctrl+S(保存)を押します
スプレッドシートの拡張機能メニュー。Apps Script の項目
図2 拡張機能 → Apps Script
Apps Script の編集画面。受信スクリプトを貼り付け、TOKEN の行を書き換えた状態
図3 スクリプトを貼り付け、TOKEN の行(20行目付近)を自分のトークンに書き換えて保存

4. ウェブアプリとして公開する

貼り付けたスクリプトを「店舗からデータを受け取れる窓口(ウェブアプリ)」として 公開します。

  1. 編集画面右上の「デプロイ」→「新しいデプロイ」を選びます(図4)
  2. 左上の歯車(種類の選択)→「ウェブアプリ」を選びます(図5)
  3. 設定を次のとおりにします(図6):
    説明分かりやすい名前(例: JETCHECKER 受信)
    次のユーザーとして実行自分(そのまま)
    アクセスできるユーザー全員(「自分のみ」から変更)
  4. 「デプロイ」を押します
  5. 「データへのアクセスを許可する必要があります」と表示されたら 「アクセスを承認」を押します(図7)。 → 次章の許可画面に進みます
「アクセスできるユーザー: 全員」について — これは「URL を知っている相手からの受信を受け付ける」という意味です。 URL は推測できない長い文字列で、さらに受信のたびにトークンを照合するため、 URL とトークンを店舗以外に教えない限り、第三者がシートに書き込むことはできません (→ 10章)。
デプロイメニュー。新しいデプロイの項目
図4 デプロイ → 新しいデプロイ
種類の選択メニュー。ウェブアプリの項目
図5 歯車(種類の選択)→ ウェブアプリ
ウェブアプリの設定。次のユーザーとして実行=自分、アクセスできるユーザー=全員
図6 設定: 実行=自分 / アクセスできるユーザー=全員
アクセスを承認ボタンのある画面
図7 「アクセスを承認」を押すと、許可のウィンドウが開く

5. アクセスを許可する(警告画面の読み方)

「アクセスを承認」を押すと、Google の許可画面が別ウィンドウで開きます。 途中で赤い警告(「このアプリは Google で確認されていません」/ 英語では Google hasn't verified this app)が表示されますが、 これは異常ではありません。いま自分で貼り付けたスクリプトは Google の審査を受けた市販アプリではないため、自作のスクリプトに対して 必ず表示される定型の警告です。この許可は「自分のスクリプトに、自分の スプレッドシートへの書き込みを許す」という意味です。

  1. アカウントの選択画面が出たら、シートを作った自分のアカウントを選びます
  2. 赤い警告画面(図8)で「詳細」(英語: Advanced)をクリックします
  3. 下に現れた「(プロジェクト名)に移動(安全ではないページ)」 (英語: Go to … (unsafe))をクリックします(図9)
  4. アクセス内容の確認画面(図10)で「許可」(英語: Continue / Allow)を 押します
Google hasn't verified this app の警告画面
図8 赤い警告画面。「詳細(Advanced)」をクリック
詳細を開いた警告画面。Go to JETCHECKER 受信 (unsafe) のリンク
図9 「JETCHECKER 受信(安全ではないページ)に移動」をクリック
アクセス内容の確認画面。Continue ボタン
図10 内容を確認して「許可(Continue)」

6. URL とトークンを店舗へ渡す

許可が終わると「デプロイを更新しました」の画面に ウェブアプリの URL が表示されます(図11)。 「コピー」で控えてください(URL は https://script.google.com/macros/s/…/exec という形です)。

デプロイ完了画面。ウェブアプリの URL とコピーボタン
図11 ウェブアプリの URL をコピーする(この画面を閉じたあとも「デプロイ」→「デプロイを管理」でいつでも確認できます)

各店舗の担当者に、次の2つを渡します:

受信 URL図11 でコピーしたウェブアプリの URL
トークン1章で決めた文字列(店舗側の設定に同じものを入力します)

店舗側の操作は次の3つです(店舗の『取扱説明書』の「データ自動送信」の章にも 同じ手順があります)。

  1. JETCHECKER LINK の業務画面で「外部機器」ページを開き、 「データ自動送信(Webhook)」の欄に受信 URLトークンを入力します
  2. 「接続テスト」を押し、成功の表示を確認します(受け口が応答できるかを 確かめるだけで、シートには何も書き込まれません)
  3. 「データ自動送信を有効にする」にチェックを入れ、 「この内容で保存」を押します(設定の変更には実施者名が必要です)

以後、店舗で計数が確定するたびに自動で送信されます。届かないときは、店舗側の同じ欄に 未送信の件数と直近のエラーが表示されます(→ 9章)。

7. 店舗一覧に店舗名を記入する

店舗からの受信が始まると、スプレッドシートに2枚のシートが自動で作られます:

  • 「計数データ」 — 届いた計数が1件1行で追記されていきます
  • 「店舗一覧」 — 送ってきた機器の番号が自動で行になります。 B列(店舗名)にその機器を使っている店舗の名前を記入してください。 以後に届く行の「店舗名」列に、その名前が自動で入ります(図12・図13)
店舗一覧シート。機器番号ごとに店舗名を記入した状態
図12 店舗一覧シート。B列に店舗名を記入する(最終受信の列で「どの店舗からいつ届いたか」が分かる)
計数データシート。受信した計数が並び、店舗名の列に記入した名前が入っている
図13 計数データシート。店舗名を記入した後に届いた行(5行目)には店舗名が入る

8. 日々の見方(欠落チェック)

  • 計数データは「届いた順の生データ」です。集計はスプレッドシートの ピボットテーブルや関数で自由に行えます(受信スクリプトは行を追記するだけなので、 別シートに自分の集計を作っても影響しません)
  • 店舗一覧の「最終受信」で、店舗ごとに最後にデータが届いた日時が 分かります。営業しているはずの店舗の最終受信が古いままなら、店舗側の PC・回線・設定を確認してください(店舗側の画面には未送信の件数と 「今すぐ送信」ボタンがあります)
  • 回線が切れていた間の計数も、店舗側に貯まっていて復帰後に自動で 追送されます(届かないままにはなりません)。同じ計数が2回届いても シートには1回だけ記録されます

9. うまくいかないとき

店舗の接続テストが失敗する ①店舗側に入力した URL・トークンに写し間違いがないか(前後の空白にも注意) ②4章の「アクセスできるユーザー」が全員になっているか (「デプロイ」→「デプロイを管理」→ 鉛筆マークで確認・変更できます)
スクリプトを修正した/トークンを変えたのに反映されない コードの保存だけでは公開中のウェブアプリに反映されません。 「デプロイ」→「デプロイを管理」→ 鉛筆マーク → バージョン:「新バージョン」→「デプロイ」で反映します (URL は変わりません。「新しいデプロイ」を作り直すと URL が変わってしまい、 全店舗の再設定が必要になるので注意)
シートを別のファイルに作り直したい 新しいシートで本書の手順をやり直すと URL が新しくなります。 各店舗に新しい URL を配り直してください。古いシートのデータは 必要ならコピーして残します
行が増えすぎた 年や月ごとに新しい受信シートへ切り替える運用がおすすめです (本書の手順をやり直し、切り替え日に各店舗の URL を更新)

10. セキュリティのメモ

  • 受信 URL とトークンは店舗の担当者以外に教えないでください。 この2つを知らない相手は、シートに書き込むことができません
  • 送られてくるのは計数データ(金額・枚数・金種の内訳・時刻・機器番号・店舗ID) だけです。お客様の個人情報は含まれません
  • シートの中身を見られる相手は、Google スプレッドシートの通常の共有設定で 決まります(受信の仕組みとは別です)。共有は必要な人だけにしてください
  • トークンを変えたいときは、スクリプトの TOKEN の行を書き換えて 「新バージョンのデプロイ」(→ 9章)を行い、各店舗にも新しいトークンを 設定してもらいます

11. 受け口を自作する場合の仕様(開発者向け)

受け口は Google スプレッドシートでなくてもかまいません。自社のサーバーや既存の Web アプリで直接受け取る場合は、この章の仕様に沿って受け口を作ってください。 ここに書かれた内容は、今後のバージョンでも互換性を維持します。書かれていない動作は 内部実装であり、予告なく変わることがあります。

11.1 送られてくるリクエスト

店舗の PC(JETCHECKER LINK)が、設定された URL へ POST します。 Content-Typeapplication/json、ボディは次の形です。

{
  "type": "count",
  "token": "店舗側の設定画面で入力されたトークン",
  "store_id": "店舗ID(店舗側で未設定なら、この項目ごと省略)",
  "sent_at": "2026-09-02T15:00:00+09:00",
  "events": [
    {
      "event_id": "01J8Z…(記録番号。重複排除のキー)",
      "received_at": "2026-09-02T14:59:58+09:00",
      "event": { … 計数イベント本体 … }
    }
  ]
}
表11-1 リクエストの項目
項目内容
type "count"=計数データ。"test"=接続テスト(店舗側の 「接続テスト」ボタン。events は付きません。受け口はトークンの照合だけを行い、 何も記録せずに成功応答を返してください)。将来の機能は新しい type の値で 追加されます。知らない type は記録せずに成功応答を返すことを お勧めします(拒否し続けると、その店舗からの送信がそこで止まります → 11.3)
token 店舗側の設定画面で入力されたトークン(文字列)。受け口が持つ値と一致しなければ 失敗応答で拒否してください。認証はこの一致のみです(HTTP ヘッダーには入りません)
store_id 店舗側の業務設定の店舗ID(文字列)。未設定の店舗からは項目自体が省略されます
sent_at送信時刻(RFC 3339、タイムゾーン付き)
events 計数イベントの配列。1件でも配列で、1回の送信に最大 50 件。配列の中も、送信と送信の 間も、発生順です
events[].event_id 記録番号(ULID 形式の文字列)。1件の計数を一意に表し、重複排除のキーに なります(→ 11.3)。アプリの計数明細に表示される event_id と同じ値です
events[].received_at店舗の PC が計数機から受信した時刻(RFC 3339)
events[].event 計数イベントの本体(JSON オブジェクト)。通貨・金額・枚数・金種内訳・機器番号などを 含み、形は HTTP API 仕様書(公開版)の「イベントスキーマ」章で公開している 計数イベントと同一です(加工せずにそのまま埋め込んでいます)

11.2 返すべき応答

  • 成功=HTTP ステータス 2xx かつ ボディが {"ok":true}(JSON)。この両方がそろったときだけ、店舗側は「届いた」と 判断して次のデータに進みます
  • 失敗=それ以外のすべて。HTTP エラー、ボディが JSON でない (OK などのテキストも失敗)、{"ok":false,"error":"理由"} など。 error の文字列は店舗側の画面に「直近のエラー」として表示されるので、 原因が分かる短い文にしてください
  • リダイレクト(302)には追従します(その際 GET になります。Google Apps Script の 仕様に合わせた動作です)。自作の受け口ではリダイレクトせず、直接応答してください
  • 応答は速やかに返してください(店舗側は 30 秒で打ち切り、失敗として扱います)

11.3 配送の保証と、受け口側で必ず行うこと

  • 少なくとも1回は届きます(at-least-once)。応答が途中で失われた場合などに 同じイベントがもう一度送られることがあります。受け口は event_id が既に記録済みなら読み捨てる処理を必ず入れてください (同梱のスプレッドシート用スクリプトでは直近 500 行と照合しています)
  • 順序: 1店舗からは発生順に、1本ずつ直列に送られます
  • 失敗時は自動で再試行します。間隔を広げながら、諦めずに繰り返し、回線の復旧後に 未送信分から追送します。先頭の1バッチが成功するまで、その後のデータも送られません (順序を守るため)。したがって、受け口が失敗応答を返し続けると、その店舗の画面に「データ送信 滞留」の 警告が出て未送信が溜まっていきます。一時的な障害(DB 接続不可など)は失敗応答で再送させ、 恒久的に受け取らないデータ(知らない type など)は成功応答で読み捨てる のが正しい使い分けです
  • バッチ(最大 50 件)は全体で成否を判定します。途中の1件で失敗応答を返すと、記録済みの分も含めて バッチ全体が再送されます。event_id の重複排除があれば二重記録にはなりません

11.4 セキュリティ上の注意

  • 受け口の URL は HTTPS のみ設定できます(平文の http は店舗側で拒否されます)
  • 認証はトークンの一致だけです。トークンは推測されにくい長いランダムな文字列 (20 文字以上を推奨)にし、URL とトークンの両方を秘密として扱ってください。この2つを知る相手は 偽のデータを送れます
  • 送信元は店舗の PC(店舗の回線)なので、送信元 IP は固定ではありません。IP による制限は 前提にしないでください
  • 送られる内容は計数データ(金額・枚数・金種内訳・時刻・機器番号・店舗ID)だけで、 お客様の個人情報は含まれません

11.5 参考実装

同梱の Google スプレッドシート用スクリプト(→ 3章)は、この章の内容を すべて満たす受け口の参考実装です(トークン照合・接続テストへの応答・event_id の 重複排除・同時受信の排他・店舗一覧の更新)。自作するときは、まずこのスクリプトを読むと 理解が早いです。