AppSheetで在庫管理アプリ(第7回)CSVでデータをエクスポートする

folder_openAppSheet

在庫管理アプリを作りながら、AppSheetの使い方を学びましょう。
前回(第6回)はVirtual Columnを使用して、品目別に在庫量を表示できるようにしました。
今回は、品目や在庫量をCSV形式でエクスポートしてみます。
在庫量を一覧したい時や何らかの分析をする時に、CSVエクスポート機能を活用しましょう。

【お知らせ】
2022年10月以降、AppSheetエディタの画面が新しく変更されています。
AppSheetのアップデートが速すぎて(汗)、このブログ記事はまだ新エディタの画面には対応していません。
エディタ画面右上にある「Switch to the legacy editor」というアイコンをクリックすると、新エディタと旧エディタの切り替えができます。
記事のアップデートができるまでは、とりあえず、旧エディタに切り替えて解説を読んでください。

Switch to the legacy editor」で旧エディタに切り替える。

1. AppSheetはCSVでデータをエクスポートできる

AppSheetでCSVエクスポートするためには、Actionを作成して設定するだけなので簡単にできます。

AppSheetエディタ左側メニュー「Behavior」→ 「Action」タブをクリックして選択します。
「New Action」をクリックして、新しいActionを作成しましょう。

AppSheetエディタで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)」

For a record of this tableはCSV出力したいテーブルを指定する。Do thisは「App: export this view to a CSV file ( not a row-level action)」に設定する。

Appearanceについても設定しましょう。

  • Display name:「CSV出力」
  • Action icon:「file-download」
  • Prominence:「Display overlay」

Display nameはAction nameを短縮して「CSV出力」にした。Prominenceで「Display overlay」にする。

「品目」Viewを表示してみましょう。
AppSheetエディタ、プレビューでメニュータブ「品目」を選択します。
右下に、追加したActionのボタンを表示されているでしょうか?

「品目」Viewを表示すると、ボタンが現れる。

ボタンをクリックして、CSVエクスポートしてみましょう。
「Export CSV Started」と表示されます。

アクションボタンをクリックすると、CSVファイル出力が始まる。

「Export CSV Succeeded」と表示されたら成功です。

CSV出力が成功した。

あとは、ファイル名を指定して保存します。

ファイル名を指定してデスクトップに保存してみる。

保存したCSVをエクセルで開いてみました。
「在庫量」も出力されているので成功です。

ただし、「写真」や「QRコード」などはCSVデータとしては不要ですね。
のちほど、スライスを利用して不要な列を出力しないようにします。

無事にCSVファイルが保存されたが、必要ない列もある。

2. 出力するレコードを絞り込む

Filterという機能を使えば、出力する行(レコード)を絞り込むことができます。
名前で絞り込んだり、保管場所で絞り込んだり、いろいろできます。

「品目」Viewで、画面上にあるアイコンをクリックしてみましょう。

検索して出力するレコードを絞り込むことができる。

「Search」と表示されて、文字列を入力して絞り込むことができます。

「Search」に入力してもよい。

複数条件を設定して絞り込むこともできます。
「Filter」アイコンをクリックしてみましょう。

「Filter」ボタンをクリックすると検索条件を複数設定できる。

列名が表示されます。
絞り込みたい列をクリックして選択します。ここでは、「品目名」列で絞り込みます。

絞り込みたい検索受験をクリックする。

「Search」に入力しました。
「DONE」をクリックすると、列選択に戻ります。

検索文字列を入力する。

「品目名」の下に入力した文字列が表示されています。
複数の条件を指定して「DONE」で絞り込みができます。

条件が設定された。

「品目名」で絞り込みができました。
この状態でActionボタンをクリックすると、絞り込まれた行(レコード)だけCSV出力されます。

品目名で絞り込まれた。そのままCSV出力できる。

3. スライスを使用して不要な列を出力しないようにする

必要な列だけを選んで出力するためには、スライスを使用します。
AppSheetエディタ左側メニュー「Data」→「Slices」タブをクリックして選択します。
「New Slice」をクリックして、新しいスライスを作成します。

AppSheetエディタでスライスを設定する。

スライスを以下のように設定します。

  • Slice Name:「在庫」
  • Source Table:「品目」
  • Row filter condition:何も設定しない

通常、スライスは「Row filter condition」に何か設定することが多いですが、今回は不要です。

CSV出力するテーブル「品目」を設定する。

Slice Columnsに出力したい列名をで追加します。
「Custom」をクリックして選択した後、列名を「Add」で追加してください。
「_RowNumber」と「ID」は自動的に追加されますが、「品目」テーブルで「SHOW?」設定のチェックを外しているので出力はされません。
逆に、「SHOW?」のチェックを外している列はエクスポートできないので注意してください。

Slice Columnsで「Custom」を選択して、CSV出力する列を選択する。

このスライスはCSVエクスポート専用にしたいので、Update modeを「Read-Only」にしました。

Update modeを「Read-Only」にしておく。

「在庫」スライスのViewを設定します。
AppSheetエディタ左側メニュー「UX」→「Views」タブをクリックして選択します。
「New View」をクリックして、新しいViewを作成します。

AppSheetでUX → ViewsでViewを作成する。

Viewは以下のように設定しました。

  • View name:「在庫」
  • For this data:「在庫 (slice) 」
  • View type:「table」
  • Position:「center」
  • Sort by:「品目名」「Ascending」
  • Display → Icon:「inventory」

「在庫」Viewを作成して、設定する。

「在庫」ViewからCSVエクスポートしてみましょう。
AppSheetエディタ、プレビューのメニュータブで「在庫」をクリックして選択します。
Actionボタンが表示されていると思うので、クリックしましょう。

AppSheetエディタのメニュータブで「在庫」を選択する。CSV出力ボタンで出力してみる。

スライスで指定した列だけ出力されました。

余分な列がなく、必要なデータだけ出力できた。

最後に、Actionボタンの設定をします。
「品目」ViewにもActionボタンが表示されていますが、こちらは非表示にしたいと思います。

AppSheetエディタ左側メニュー「Behavior」→ 「Action」タブをクリックして選択します。
「品目CSV出力」をクリックして、設定パネルを開きます。

「品目」にもアクションボタンが表示されているので、非表示にしたい。「品目CSV出力」をクリックして、設定パネルを開く。

Behavior → Only if this condition is trueを設定します。
三角フラスコアイコンをクリックして、Expression Assistantを開きます。

ボタンの表示非表示設定は「Only if this condition is true」で設定する

以下の式を入力します。コピペして使えます。

IN( CONTEXT("View"), LIST("在庫") )

INというAppSheet関数は、特定の値がリスト内の値のどれかに合致するか調べる関数です。
第1引数に調べたい特定の値、第2引数にリストを設定します。

IN関数

IN( 値, リスト) => TRUE(リスト内に合致する値がある) or FALSE(ない)

CONTEXTというAppSheet関数は、キーワードと組み合わせることで特定の意味(コンテクスト)になります。
上の式のように「View」というキーワードと組み合わせると、「現在表示されているViewの名前」という意味になります。
その他のキーワードについては、AppSheetのヘルプを参照してください。

CONTEXT関数

CONTEXT(キーワード) => キーワードごとに特定の意味

以上より、現在表示されているViewの名前が「在庫」に合致する時に、Actionボタンが表示されるようにできます。
Expression Assistantに入力したら「Save」で保存します。

INとCONTEXTというAppSheet関数で設定する。

「品目」ViewのActionボタンが非表示になりました。
CSVエクスポートは「在庫」Viewから行います。

「品目」Viewにはボタンが表示されない。

以上で、在庫管理アプリは完成です。

在庫量の計算方法、入出庫履歴の項目など、設計次第で色々な作り方があります。
今回紹介した在庫管理アプリは、できるだけ少ない学習時間で、AppSheetだけでできるように工夫しました。

このアプリを起点として、仕入管理や出荷管理と連携したり、発注点管理などの応用も可能になります。
まずは、基本的な在庫管理アプリから始めて、少しずつ機能拡張していくようにしましょう。

Share Me!

前の投稿
AppSheet と Gmail が統合 – dynamic email でできること
次の投稿
AppSheetで在庫管理アプリ(第6回)Virtual Columnで在庫量を表示する

関連記事

メニュー