-->

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

2021/02/02

Appsheet

t f B! P L

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

AppSheetで食料品の在庫管理アプリを作りながら、AppSheetのポイントをご紹介していきます。前回は アプリの表示についてUXをカスタマイズしてみました。少しはアプリっぽい雰囲気になったでしょうか。前回の記事もご参照ください。


【AppSheetで在庫管理】アプリの表示をカスタマイズする

AppSheetで食料品の在庫管理アプリを作る。アプリのUX設定でアプリの表示画面をカスタマイズします。



今回は、AppSheetの機能を高める数式と関数についてご紹介し、数式と関数を使ってフィルターを設定し、スライスを作成してテーブルから一部アイテムを抽出します。


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

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

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


数式の入れ方

AppSheetでは、各列の値や条件分岐に関数を使うことができます。これはなかなか便利な上、アプリの挙動を操作するにも数式が使いこなせると楽になります。一方、設定を誤るとアプリがスタックするので要注意です(スタックしたら直前の作業を取り消せば良いのですが)。

数式や関数を入力するためには、テーブルのColumnsタブで各列の設定を呼び出し「FORMULA」欄をクリックすると、入力ウィンドウが出てきます。



これがまた優れもので、数式や関数の種類別にタブで分けられており、しかも「Example」で使用例や実際の使用パターンが提案されるのです。使いたい関数を見つけたら、右の「Insert」を押すと、数式の中に取り込まれる仕組みです。



Columnsタブを押すと、アプリの列に合わせたサンプルが自動的に提案されます。本当に賢い。

数式でセルを指定する

AppSheetでの数式に使うセル(テーブルの特定行のある列)を記載するルールはおおよそ以下の通りです(全てはカバーしていません)。

  • 各列は[ ]で括る、[Barcode]、[Name]など。テーブル名がなければ、現在のテーブルを参照する。
  • 現在の行は、[_THISROW]で示される。現在の行のName列は、[_THISROW][Name]。
  • テーブル名をつけるときは、テーブル名[列の名前]。Inventory List[Barcode]。

ディープリンク

AppSheetにはディープリンク用の関数も用意されています。主なものは以下の通りです。ビューの遷移にはお役立ちですが、使い方はちょっと癖があるような・・・

  • "#view=テーブル名":指定したテーブルのビューに遷移。同じ機能の関数に「LINKTOVIEW」あり。
  • LINKTOAPP("アプリの名前”):アプリから他のAppsheetアプリを起動。
  • LINKTOVIEW("ビューの名前”):指定したビューに遷移。
  • LINKTOFORM("フォームの名前","フォームに対応するテーブルの列",[現在のテーブルの列],...):指定したフォームビューに遷移する。現在のテーブルのデータを引数として指定した列にコピーすることができる(任意)。"フォームに対応するテーブルの列"と[現在のテーブルの列]が対になる必要あり。

その他の関数

これ以外にも様々な関数が用意されています。算術関数・テキスト関数・日付時刻関数など・・・Excelなどスプレッドシートで使う関数と同じような名前・機能なので、それほど違和感もないはずです。



タブを変えてみながら目標の関数を探すと、案外用意されていて見つかるものです。

なお、関数の引数や戻り値がわからないなどヘルプが必要なときは、左下の「Help me with expressions」を押すと、簡単な説明が出てきます(ただし英語)。これで一応どのような関数なのか知ることはできます。



AppSheetのヘルプセンター画面は、コンパクトによくまとまっていますが、もう少し詳細の情報が欲しいと思うこともありますね。

とにかく、実際に数式で条件を設定、データを抽出・表示してみます。

データ抽出のフィルタとして数式とスライスを使う

といっても、難しい条件でもなく、「賞味期限まで残り30日を切っている在庫を表示する」というもの。でも、賞味期限が近いものは把握しておきたいですよね・・・

スライスとは

スライスとは、テーブルのデータのうち条件に合うものだけを抽出して新たなテーブルのようにまとめる機能のことです。

例えば、顧客テーブルの中から、自分が担当する顧客だけリストアップするといった場合に使えます。ここでは、賞味期限まで残り30日を切っている在庫だけリストアップする、ということになります。

スライスにも名前をつけることができますので、あたかも新しいテーブルのように扱えますが、参照元テーブルのデータが変われば、スライスのデータも更新されます。

スライスの作成

作業は簡単。新しいスライスを作り、フィルターを数式で設定するだけです。DataメニューのSlicesタブでスライスの画面に移り、New Sliceボタンを押すと、新しいスライスができます。



ここでスライスの名前、データ抽出元となるテーブルをInventory Listに設定します。Row filter conditionのボタンを押すと、入力ウィンドウが出てくるので、「賞味期限が今日から30日以内」となる


「[Expiry]<(today()+30)」


を入力します。数式というほどのものでもありませんが・・・



Columnsタブを見ると、「[Expiry]」が自動で出てきており、列の名前を忘れてしまっても、Insertボタンを押せば数式に取り付いてくれます。

さらに、数式を入れると、そのそばから数式の正否を判定、エラーの有無も表示してくれます。画面のように緑丸チェックであれば大丈夫です。合わせてどのような数式になっているかも教えてくれます。もうマニュアル本いらないですね。

抽出したデータを表示するビューが必要

スライスができれば、データはもう抽出されています。これを表示するビューを作れば、賞味期限切れリストの完成です。



UXメニューからViewsタブで、新規ビュー作成ボタンを押すと、ビュー設定画面が出てきます。For this data欄には、作ったスライス(ここではnew Slice)がリストに入って出てきますので、これを選びます。と、すぐにプロトタイプのスクリーンにもビューが表示されます。これだけです。

あとは、ビューの名前やアイコンを設定するだけ。説明する必要もないくらい簡単でした。

ここまでで、一通りの機能は備わったように見えます。実際のアプリでは、バーコードを読み取り商品情報を入れれば、在庫として登録され、賞味期限管理もできるようになります。しかし、もう少しこだわりたいところ。

せっかくバーコード管理するのですから、同じ商品が出てきたときには取込済の賞品情報を再利用できるようにしたいですね。本当はデータベースから取り込めればいいのですが、全編ノーコードで作りますので、まずはできる範囲で作りたいと思います。

ということで、次は「データを抽出、そのバーコードありますか?」に続く・・・

シリーズ目次

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

在庫管理アプリ構築編

個別処理編

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

AppSheetの参考図書

ノーコードプログラミングって何だっけ?結局AppSheetって何なんだ?という方に、こちらの参考図書もどうぞ!



このブログを検索

最新記事はこちら

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

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

ラベル

自己紹介

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