在庫管理アプリを作りながら、AppSheetの使い方を学びましょう。
前回(第6回)はVirtual Columnを使用して、品目別に在庫量を表示できるようにしました。
今回は、品目や在庫量をCSV形式でエクスポートしてみます。
在庫量を一覧したい時や何らかの分析をする時に、CSVエクスポート機能を活用しましょう。
【お知らせ】
2022年10月以降、AppSheetエディタの画面が新しく変更されています。
AppSheetのアップデートが速すぎて(汗)、このブログ記事はまだ新エディタの画面には対応していません。
エディタ画面右上にある「Switch to the legacy editor」というアイコンをクリックすると、新エディタと旧エディタの切り替えができます。
記事のアップデートができるまでは、とりあえず、旧エディタに切り替えて解説を読んでください。
1. AppSheetはCSVでデータをエクスポートできる
AppSheetでCSVエクスポートするためには、Actionを作成して設定するだけなので簡単にできます。
AppSheetエディタ左側メニュー「Behavior」→ 「Action」タブをクリックして選択します。
「New Action」をクリックして、新しいActionを作成しましょう。
以下のように設定しました。
- Action name:「品目CSV出力」
- For a record of this table:「品目」
- Do this:「App: export this view to a a CSV file (not a row-level action」
- CSV file locale: 「Japanese (Japan)」
Appearanceについても設定しましょう。
- Display name:「CSV出力」
- Action icon:「file-download」
- Prominence:「Display overlay」
「品目」Viewを表示してみましょう。
AppSheetエディタ、プレビューでメニュータブ「品目」を選択します。
右下に、追加したActionのボタンを表示されているでしょうか?
ボタンをクリックして、CSVエクスポートしてみましょう。
「Export CSV Started」と表示されます。
「Export CSV Succeeded」と表示されたら成功です。
あとは、ファイル名を指定して保存します。
保存したCSVをエクセルで開いてみました。
「在庫量」も出力されているので成功です。
ただし、「写真」や「QRコード」などはCSVデータとしては不要ですね。
のちほど、スライスを利用して不要な列を出力しないようにします。
2. 出力するレコードを絞り込む
Filterという機能を使えば、出力する行(レコード)を絞り込むことができます。
名前で絞り込んだり、保管場所で絞り込んだり、いろいろできます。
「品目」Viewで、画面上にあるアイコンをクリックしてみましょう。
「Search」と表示されて、文字列を入力して絞り込むことができます。
複数条件を設定して絞り込むこともできます。
「Filter」アイコンをクリックしてみましょう。
列名が表示されます。
絞り込みたい列をクリックして選択します。ここでは、「品目名」列で絞り込みます。
「Search」に入力しました。
「DONE」をクリックすると、列選択に戻ります。
「品目名」の下に入力した文字列が表示されています。
複数の条件を指定して「DONE」で絞り込みができます。
「品目名」で絞り込みができました。
この状態でActionボタンをクリックすると、絞り込まれた行(レコード)だけCSV出力されます。
3. スライスを使用して不要な列を出力しないようにする
必要な列だけを選んで出力するためには、スライスを使用します。
AppSheetエディタ左側メニュー「Data」→「Slices」タブをクリックして選択します。
「New Slice」をクリックして、新しいスライスを作成します。
スライスを以下のように設定します。
- Slice Name:「在庫」
- Source Table:「品目」
- Row filter condition:何も設定しない
通常、スライスは「Row filter condition」に何か設定することが多いですが、今回は不要です。
Slice Columnsに出力したい列名をで追加します。
「Custom」をクリックして選択した後、列名を「Add」で追加してください。
「_RowNumber」と「ID」は自動的に追加されますが、「品目」テーブルで「SHOW?」設定のチェックを外しているので出力はされません。
逆に、「SHOW?」のチェックを外している列はエクスポートできないので注意してください。
このスライスはCSVエクスポート専用にしたいので、Update modeを「Read-Only」にしました。
「在庫」スライスのViewを設定します。
AppSheetエディタ左側メニュー「UX」→「Views」タブをクリックして選択します。
「New View」をクリックして、新しいViewを作成します。
Viewは以下のように設定しました。
- View name:「在庫」
- For this data:「在庫 (slice) 」
- View type:「table」
- Position:「center」
- Sort by:「品目名」「Ascending」
- Display → Icon:「inventory」
「在庫」ViewからCSVエクスポートしてみましょう。
AppSheetエディタ、プレビューのメニュータブで「在庫」をクリックして選択します。
Actionボタンが表示されていると思うので、クリックしましょう。
スライスで指定した列だけ出力されました。
最後に、Actionボタンの設定をします。
「品目」ViewにもActionボタンが表示されていますが、こちらは非表示にしたいと思います。
AppSheetエディタ左側メニュー「Behavior」→ 「Action」タブをクリックして選択します。
「品目CSV出力」をクリックして、設定パネルを開きます。
Behavior → Only if this condition is trueを設定します。
三角フラスコアイコンをクリックして、Expression Assistantを開きます。
以下の式を入力します。コピペして使えます。
IN( CONTEXT("View"), LIST("在庫") )
INというAppSheet関数は、特定の値がリスト内の値のどれかに合致するか調べる関数です。
第1引数に調べたい特定の値、第2引数にリストを設定します。
IN( 値, リスト) => TRUE(リスト内に合致する値がある) or FALSE(ない)
CONTEXTというAppSheet関数は、キーワードと組み合わせることで特定の意味(コンテクスト)になります。
上の式のように「View」というキーワードと組み合わせると、「現在表示されているViewの名前」という意味になります。
その他のキーワードについては、AppSheetのヘルプを参照してください。
CONTEXT(キーワード) => キーワードごとに特定の意味
以上より、現在表示されているViewの名前が「在庫」に合致する時に、Actionボタンが表示されるようにできます。
Expression Assistantに入力したら「Save」で保存します。
「品目」ViewのActionボタンが非表示になりました。
CSVエクスポートは「在庫」Viewから行います。
以上で、在庫管理アプリは完成です。
在庫量の計算方法、入出庫履歴の項目など、設計次第で色々な作り方があります。
今回紹介した在庫管理アプリは、できるだけ少ない学習時間で、AppSheetだけでできるように工夫しました。
このアプリを起点として、仕入管理や出荷管理と連携したり、発注点管理などの応用も可能になります。
まずは、基本的な在庫管理アプリから始めて、少しずつ機能拡張していくようにしましょう。