AppSheetで実現する在庫管理DX|実運用に耐えうるデータ設計・実装の鉄則と限界・注意点の徹底解説 <実装編>
【はじめに】脱Excelで現場が変わる!AppSheetで実現するスマート在庫管理

在庫管理は企業の利益に直結する重要な業務ですが、アナログな手法では限界があります。
「在庫管理をExcelで行っているが、入力ミスが絶えない」「現場でリアルタイムに在庫を確認したいが、専用システムは高すぎて手が出ない」…こんな悩みを抱えている企業様も多いのではないでしょうか。
Google AppSheetならプログラミングの知識がなくても、現場のスマホをハンディターミナルに変える高機能な在庫管理アプリを自作できます。
本記事では、単なるアプリの作り方だけでなく、実運用に耐えうるデータ設計の極意から、バーコード実装、そしてAppSheetの「限界」を突破するテクニックまで、現場導入を成功させるためのノウハウを徹底解説します。
本記事は「実装編」です。基本的なデータ構造やテーブル設計については、以下の記事をご覧ください。
関連記事:AppSheetで実現する在庫管理DX|実運用に耐えうるデータ設計・実装の鉄則と限界・注意点の徹底解説 <設計編>
【実装編1】スマホをハンディ端末に!バーコード・QRコード機能の実装

AppSheetを在庫管理で使う最大の利点は、スマホカメラを使ったスキャン機能ですよね。これにより、型番の手入力ミスをゼロにし、棚卸作業の時間を大幅に短縮できます。
商品マスタへのバーコード登録とQRコード自動生成(外部API活用)
まずは、商品マスタにバーコード情報を持たせる必要があります。
既存のJANコードがある場合はそれを登録しますが、社内管理用の独自コードを使いたい場合は、AppSheet上でQRコードを自動生成してラベルシールに印刷できるようにすると便利です。
QRコードの自動生成には、外部のQRコード生成API(例:qrserver.com API)を利用します。
商品マスタに「QR画像」というVirtual Columnを作成し、以下のApp Formulaを設定します。
CONCATENATE("https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=", [商品ID])
この設定を行い、Column Typeを Image にすると、商品IDに対応したQRコードが自動的に表示されます。
これをGoogleドキュメントのテンプレート機能を使ってラベル印刷すれば、即席の管理ラベルの完成です。
カメラでスキャンして商品を検索・入力する設定手順
入出庫ログの入力画面でカメラを起動できるようにします。
- カラム設定:
「入出庫ログ」テーブルの [商品ID] カラムの設定を開きます。 - Scannableを有効化:
カラム設定内の「Scannable」スイッチ(または Other Properties セクション内)をオンにします。 - 検索設定(Searchable):
商品マスタ側でも、バーコードが入っているカラムの Searchable にチェックが入っていることを確認してください。
これで、スマホアプリ上の入力フォームで [商品ID] 欄をタップすると、キーボードの横にバーコードアイコンが表示されるようになります。
これをタップするとカメラが起動し、スキャンした瞬間に該当する商品が入力されます。
連続スキャンは可能?現場の作業効率を上げるUI設定の工夫
デフォルトの設定では、1件スキャンして保存すると、またメニューに戻って「追加」ボタンを押さなければなりません。
これでは棚卸のような連続作業には不向きですので、現場の作業効率を上げるために、以下の設定を行います。
- Auto Reopen(連続入力):
UX > Views から入出庫ログのForm View(入力画面)を選択し、Auto reopen をオンにします。これで「保存」を押すと即座に次の新規入力画面が開きます。 - Auto Save(自動保存):
同じくForm Viewの設定で Auto save をオンにします。必須項目が全て埋まった時点(例えばスキャン完了時)で自動的に保存されるようになりますが、数量入力が必要な場合はオフのままが良いです。
※スキャン(バーコード)だけで1件の入力が完結する単一入力フォーム(棚卸のカウントなど)」 の場合にのみ Auto Save が威力を発揮し、手入力項目(数量や保管場所の変更など)がある場合は勝手にフォームが保存されてしまうリスクがあるため「手動入力が必要なフォームではオフ(OFF)」を推奨します。 - Dashboard Viewの活用:
画面上部に「スキャンボタン」、下部に「今日の入出庫履歴」を並べたDashboard Viewを作成すると、スキャンした結果が正しく登録されたかを目視で確認しながら作業できるため、現場での安心感が高まります。
関連記事:【製造業のDX】Power AppsでQRコード付き在庫管理アプリの作り方と導入の壁を突破する秘策
【実装編2】Automationで業務自動化と在庫アラート通知

データが蓄積されるだけでは、ただの「デジタル記録帳」となってしまいます。
AppSheetの真骨頂であるAutomation(自動化)機能を使い、在庫管理業務を能動的なシステムへと進化させましょう。
在庫が閾値を下回ったらメール・Slackへ自動通知するBot作成
「気付いたら在庫切れで機会損失を出してしまった」という事態を防ぐため、在庫数が発注点(閾値)を下回った瞬間に担当者へ通知を送るBotを作成します。
実装ステップは以下の通りです。
- Eventの作成:
Automationタブで新しいBotを作成し、Eventを「Data Change」→「Updates_Only」に設定します。対象テーブルは「商品マスタ」です。 - Condition(条件)の設定:
通知を送る条件式を記述します。AND([_THISROW_BEFORE].[現在在庫] >= [発注点], [_THISROW_AFTER].[現在在庫] < [発注点])※この式は「変更前は発注点以上だったが、変更後に発注点を下回った時」のみ発動することを意味し、無駄な連続通知を防ぎます。 - Process(処理)の設定:
「Send an email」タスクを追加します。宛先や件名を設定し、本文には <<[商品名]>> などの変数を埋め込んで、「商品Aの在庫が5個になりました。発注をお願いします」といった具体的なメッセージを作成します。Slack連携もWebhook機能を使えば容易に実装可能です。
定型業務の自動化:日次・月次の在庫集計プロセス
毎日の終わりに「本日の入出庫一覧」をマネージャーに送付したり、月末に「棚卸用リスト」を作成したりする業務も自動化できます。
これには Scheduled Event を使用します。
「毎日 18:00」や「毎月1日 9:00」といったスケジュールをトリガーにし、Run a task でレポート生成やメール送信を行います。
特に、AppSheetはPDF生成機能を持っているため、これまでExcelで手作業で作っていた日報を、完全に自動生成されたPDF添付メールに置き換えることが可能です。
【実装編3】帳票出力(PDF)と外部システム連携

在庫管理業務の最後のアウトプットとして欠かせないのが「帳票」ですね。
納品書、受領書、棚卸表など、紙やPDFでの出力ニーズは根強く残っているかと思います。
Automationを使った納品書・棚卸表のPDF自動生成
AppSheet標準のAutomation機能には「Create a new file」というタスクがあります。
これを使うと、Googleドキュメントをテンプレートとして、データを埋め込んだPDFを作成できます。
- テンプレート作成:
Googleドキュメントで帳票の雛形を作ります。
<<[取引先名]>> や <<Start: [Related 入出庫ログs]>> <<[商品名]>> … <<End>> といったタグを配置することで、親レコードの情報と、それに紐づく子レコード(明細行)を表形式で出力できます。 - 保存先:
生成されたPDFはGoogleドライブの指定フォルダに保存されます。同時にメール添付で送信することも可能です。
標準機能の限界を超える:GAS連携による高度なレポート作成
AppSheet標準のPDF生成機能は便利ですが、「複雑なレイアウト調整」や「条件に応じた書式変更(赤字にする等)」、「厳密な改ページ制御」が苦手です。
日本の帳票文化特有の細かい罫線やレイアウト要件には対応しきれないことがあります。
その場合の解決策が、Google Apps Script (GAS) との連携です。
- AppSheetのAutomationから「Call a script」を選択し、GASの関数を呼び出します。
- GAS側で、SpreadsheetAppやDocumentAppクラスを使って、より自由度の高い帳票生成ロジックを組みます。
- 必要であれば、GASから直接プリンタ連携サービス(クラウド印刷サービス(PrintNode等))にジョブを投げることも可能です。
この「標準機能で無理ならGASへ逃がす」という設計パターンを持っておくことが、要件の厳しい在庫管理アプリ開発では重要になります。
CSVインポート/エクスポートによる既存システムとの連携フロー
会計システムや基幹システムとの連携には、CSVが最も汎用的です。
AppSheetでは、Action機能を使って「現在のViewのデータをCSVとしてダウンロード」するボタンを簡単に作成できます(Export this view to a CSV file)。
逆に、基幹システムから出力された商品マスタCSVを取り込む場合は、AppSheetの「Import」機能を使います。これにより、マスタメンテナンスの手間を削減し、システム間のデータ同期を図ることができます。
運用を成功させるためのセキュリティとパフォーマンス対策

アプリが完成しても、運用面での配慮が欠けていれば現場には定着しません。
特に「誰が何を見られるか」というセキュリティと、「サクサク動くか」というパフォーマンスは生命線です。
ユーザー権限管理とSecurity Filterによる閲覧制限
在庫データの中には、原価情報など、アルバイトスタッフには見せたくない情報が含まれることがあります。また、A倉庫の担当者にはA倉庫の在庫だけを見せたいというケースも多いでしょう。
これを実現するのが Security Filter です。
各テーブルのSecurity設定に式を記述することで、行レベルでのアクセス制御(Row-Level Security)を実現します。
例:[倉庫ID] = LOOKUP(USEREMAIL(), "担当者マスタ", "メール", "担当倉庫")
この式を設定すると、アプリはユーザーがログインした際、そのユーザーが担当する倉庫のデータだけをデバイスにダウンロードします。
これは単なる表示制御ではなく、データそのものが端末に届かないため、セキュリティ強度が非常に高く、同時に読み込みデータ量が減るためアプリの高速化にも寄与します。
アプリが重い?動作パフォーマンスを改善するポイント
運用開始から数ヶ月経つと、「最近アプリが重い」という声が上がることがあります。その際のチェックポイントと改善策をまとめます。
- 画像の最適化:
スマホで撮影した写真は高画質すぎて容量を圧迫します。
AppSheetのImage設定で、アップロード時の画像サイズを「Low」または「Medium」に制限しましょう。在庫確認用ならこれで十分です。 - Sync頻度の見直し:
「Automatic updates」や「Sync on start」の設定を見直します。全ての操作で即時同期を求めるとストレスになります。
オフライン入力を基本とし、作業の区切りで手動Syncする運用の方が、現場のリズムを崩しません。 - 古いデータのアーカイブ:
前述の通り、スプレッドシートの行数はパフォーマンスに直結します。
GASを使って「1年以上前のログを別シート(アーカイブ)に移動する」スクリプトを定期実行し、AppSheetが読み込むデータ量を常に軽量に保つ運用を推奨します。
【まとめ】現場主導のスピード感と、情シス主導の堅牢な設計で在庫管理DXを成功させましょう
AppSheetを活用した在庫管理アプリの実装において重要なのは、単にアプリ画面を作るだけでなく、「現場の作業負担を極限まで減らすUI工夫」「万が一の在庫切れや不正アクセスを防ぐガバナンス設計」「将来のデータ増大に耐えうるパフォーマンス対策」を最初から組み込んでおくことです。
標準機能を賢く組み合わせ、限界のある部分はGAS(Google Apps Script)や外部サービスへ適切に逃がすアーキテクチャ設計を行うことで、現場に長く愛される高品質な在庫管理システムを実現できます。
「自社に最適なテーブル設計やSecurity Filterのレビューをしてほしい」「既存の基幹システムやGoogle Cloud SQLとの高度な連携、GAS開発を含めてプロに任せたい」などのお悩みをお持ちの方は、お気軽にハイペリオンまでご相談ください。現場の業務フローに合わせた最適なシステム構築・内製化支援をサポートいたします。