在庫管理アプリを作りながら、AppSheetの使い方を学びましょう。
前回(第5回)は「入出庫履歴」テーブルの設定をして、入出庫記録ができるようになりました。
今回は、入出庫記録で計算した在庫量を「品目」テーブルで表示してみます。
「品目」別に在庫が分かるようになり、在庫管理アプリらしくなります。
【お知らせ】
2022年10月以降、AppSheetエディタの画面が新しく変更されています。
AppSheetのアップデートが速すぎて(汗)、このブログ記事はまだ新エディタの画面には対応していません。
エディタ画面右上にある「Switch to the legacy editor」というアイコンをクリックすると、新エディタと旧エディタの切り替えができます。
記事のアップデートができるまでは、とりあえず、旧エディタに切り替えて解説を読んでください。
1. AppSheetならVirtual Columnを活用しよう
第2回で設定した「品目」テーブルには在庫量を保存しておく列を用意していませんでした。
在庫量は常に変動しますし、スプレッドシートをその都度上書きするのは少し手間です。
AppSheetなら、このようなデータをVirtual Columnで表示するのが便利です。
Virtual Columnは「仮想的な列」なので、在庫量が変動する度にスプレッドシートを更新する必要がありません。
在庫管理アプリでは、Virtual Columnを使って品目別の在庫量を表示してみます。
「品目」テーブルに在庫表示用のVirtual Columnを追加して設定しましょう。
AppSheetエディタ左側メニュー「Data」→「Columns」タブをクリックして、「品目」テーブルをクリックします。
「品目」テーブルの列設定パネルが開きます。
右上の「Add Virtual Column」をクリックします。
Column nameに「在庫量」と入力します。
次に、App formulaの三角フラスコアイコンをクリックします。
Expression Assistantに以下の式を入力します。コピペして使えます。
IF( COUNT( SELECT( 入出庫履歴[変更後の数量], [ID] = MAXROW("入出庫履歴", "_RowNumber", [_THISROW].[ID] = [品目]) ) ) > 0, ANY( SELECT( 入出庫履歴[変更後の数量], [ID] = MAXROW("入出庫履歴", "_RowNumber", [_THISROW].[ID] = [品目]) ) ), [数量] )
この式は、前回(第5回)で設定した「変更前の数量」の計算式を少しアレンジしただけです。
「品目」テーブルからみた計算式にする必要があるので、MAXROW関数の条件式(第3引数)を
- [_THISROW].[品目] = [品目] => [_THISROW].[ID] = [品目]
に書き換えています。
また、該当品目の入出庫履歴がない時の結果は、「品目」テーブルを省略して
- [品目].[数量] => [数量]
に書き換えています。
Expression Assistantに入力したら「Save」をクリックして保存します。
ついでに、「Related 入出庫履歴s」列の表示についても修正しておきましょう。
列設定パネルを右にスクロールしてください。
「Related 入出庫履歴s」のDISPLAY NAMEフィールドに「入出庫履歴」と入力しましょう。
右隣のDESCRIPTIONの長い文章は消去してかまいません。
これで大丈夫です。
2. Virtual Columnで在庫量を表示する
「品目」テーブルに関連するViewを設定して、在庫量を表示してみましょう。
AppSheetエディタ、プレビューのメニュータブで「品目」を選択、ひとつ品目をクリックして選択します。
プレビュー画面下にある「View: 品目_Detail」のリンクをクリックします。
「品目_Detail」Viewの設定パネルが開きます。
Column orderに「数量」があります。
「数量」は品目を追加する時だけ必要なので、あとは不要になります。
「数量」をさきほど追加したVirtual Column「在庫量」に変更しました。
在庫量が表示されていれば成功です。
3. 品目別の在庫量を一覧表示する
「品目」Viewも同じように変更しましょう。
AppSheetエディタ、プレビューのメニュータブで「品目」を選択します。
プレビュー画面下にある「View: 品目」のリンクをクリックします。
「品目」Viewの設定パネルが開きます。
Column orderで「数量」を「在庫量」に変更しましょう。
これで終了です。
以上で、在庫管理アプリとしての機能はすべて完成しました。
品目マスタを追加、QRコード作成、入出庫記録、在庫量の表示ができるようになりました。
今回、品目別の在庫量はVirtual Columnを使用しているので、データソースのスレッドシートには記録されていません。
品目数が少なければ品目別在庫量を一覧したり、何か分析したりすることがあるかもしれません。
そのような場合、AppSheetにはCSV形式でデータエクスポートする機能があります。
AppSheetでエクスポートするCSVにはVirtual Columnを含めることができます。
次回(第7回)は、CSVエクスポートの方法について解説します。