-->

【AppSheetで在庫管理】データを抽出、そのバーコードありますか?

2021/02/04

Appsheet

t f B! P L

【AppSheetで在庫管理】データを抽出、そのバーコードありますか?

AppSheetで食料品の在庫管理アプリを作成しています。前回は数式でフィルター設定、スライス機能を使ったフィルターで抽出されたデータを表示する方法をご説明しました。前回の記事もご参照ください。


【AppSheetで在庫管理】数式と関数のフィルターでスライスを作ってデータを抽出する

AppSheetで食料品の在庫管理アプリを作る。数式と関数を使い、データにフィルターをかけて賞味期限間近のアイテムを抽出(スライスを使用)、表示させてみます。


ここまででも在庫管理のアプリとしては十分な機能があるようにも思いますが、このままでは、バーコードをスキャンするたびに商品名などを入れなければなりません。前回と同じ商品を買ったとき、商品情報を入れ直すなんて面倒ですね。アプリはやっぱり便利が一番。

今回は、バーコードで読み取った商品が既知のものか新しい商品か判別し、それぞれに対応するフォームに分岐させる方法を、AppSheetのActionsの機能を使って考えます。


AppSheetのUIが変更になりました

2022年10月よりAppSheetのUIが新しくなっていますが、このブログ記事のUIは更新前のものになっています。AppSheetではUIを新旧切り替えすることが可能です。記事の画像のUIと実際のUIが異なる場合はUIの切り替えを試してみてください。切り替えは以下のボタンを押すとできます。

AppSheetの新旧UIをボタンで切り替える


どうやって条件分岐させる?

分岐の流れは次の通りです。

  1. バーコードを読み取る。
  2. バーコードがProductsテーブルにあれば、在庫情報入力画面へ遷移(Inventory Listのフォームビューを表示)
  3. バーコードがProductsテーブルにない場合は、商品情報入力画面に遷移(Productsリストのフォームビューを表示)、商品情報入力後、商品情報を残して在庫情報入力画面に遷移

バーコードがすでに登録されている場合とない場合で、その後のステップ数が違うのできちんと情報を渡さないとうまく動かなさそうですね。

アクションにつながるトリガーは2通りある

AppSheetでは、アプリに何かさせるアクションを設定することができます。また、アクションを起動するトリガーを設定することができます。

トリガーは、

  1. フォームの中で何か起きたとき(イベント:表示している列が選択された場合、右や左にスワイプされたとき、Saveボタンが押されたとき、等)
  2. フォームのデータが更新されたりアプリが同期したとき
の2通りあり、それぞれで何をするか定義することができます。

フォーム内でのイベントについては、UXメニューからフォームのViewsタグで対象のフォームを選び、Behavior欄でアクションを設定します。



フォームのデータ更新やアプリの同期時のトリガーとアクション設定は、BehaviorメニューのWorkflowを通じて行うことができます。



ふたつの使い分けが案外難しい印象です。また、トリガーとアクションはWorkflowで設定する一方、実際のアクションはActionsタブのActionで定義するので、デバック時はActionsとWorkflowを行ったり来たりと、結構面倒になります。

バーコードを読み込むテーブルを作って分岐判定させる

今回は、バーコードを読み込んだ時点で分岐が必要になりますので、バーコード読み込みようにテーブルを一つ作り、読み込んだ時点で商品情報がある場合とない場合に分岐する、という仕組みにしてみました(きっと他にもより良い方法があるのだと思います)。

実際の判定とアクションは、

  1. 読み込んだバーコードをテーブルの「Barcode」列に記録、
  2. それを元にProductsテーブルに一致するバーコードがあるか検索し、
  3. あれば在庫情報入力フォームへのディープリンクを作成、
  4. なければ商品情報入力フォームへのディープリンクを作成
  5. ディープリンクへの遷移を実行
となります。

AppSheetのDataメニューにも新しいテーブルを作成するボタンがありますが、これは既存のテーブルを参照して新しいテーブルを作成するもののようです。今回は完全に新しいテーブルを作りますので、スプレッドシートに戻り、新しいシートを追加、列の名前だけを入力します。

といっても、バーコードを読み込むだけなので、列はBarcodeとなります。これに、ディープリンクを記録する「Destination」という列を作ってみました。画像にするほどのことでもありませんが、以下のような感じです。



スプレッドでシートを増やし、アプリで同期させると、DataメニューのTablesタグに、新しいテーブルを追加するボタンが表示されますので、これを押してテーブルをアプリに追加します。



追加したら、「Destination」列のデータ型を「App」に変更します。これによりディープリンクが機能するようになります。


と準備ができたら、次は「数式で分岐を設定する」に続く・・・

シリーズ目次

素人がノーコードで在庫管理アプリを簡単に作る・・・実際に作ってみるとどうなるのか?AppSheetを使って食料品の在庫管理アプリを作ってみました。バーコードの読み取り、入庫、出庫の動きをアプリで作りながら、ポイントや気づきを中心に触れてみました。素人ですので、書いてあるよりも良い方法もあるかもしれませんが、AppSheetからアプリを使い始めるまでの流れは一通り説明しています。実際の開発時間は、夕食後の時間を使って一週間程度です。さらに続編として、入出庫履歴の記録と在庫データの表示も追加しています。

在庫管理アプリ構築編

個別処理編

Yahoo!商品検索APIから情報自動取り付け編


このブログを検索

最新記事はこちら

【Glideで簡単アプリ作成】ノーコードでかんたんカウンターアプリを作る

 ノーコードアプリの作成は簡単、というけれど実際に作るとアプリ画面の設定やテーブルの定義、イベントの設定など案外手間がかかったりするものです。ここでは、ノーコードツールのGlideを使って、簡単なアプリを簡単に作ってみます。 一日にやってみた回数をカウントするアプリを作る ここで...

ラベル

自己紹介

数学苦手な文系が、そろそろネットで何かやってみるか、という程度。のんびり、てきとーに。