-->

【AppSheetで在庫管理】ワークフローとアクションで入出庫履歴を記録

2021/03/11

Appsheet

t f B! P L

【AppSheetで在庫管理】ワークフローとアクションで入出庫履歴を記録


ご注意

AppSheetでは、ワークフロー機能をオートメーション機能に統合していくようです。ワークフロー画面上部に以下メッセージが表示されています。以下でご説明しますワークフローについては、近日中に新規作成ができなくなるとのことですので、ご注意ください(2021年4月17日時点)。



なお、ワークフローによらず、オートメーションのボットによる本機能の作成については、こちらの記事も是非ご覧ください。


【AppSheetで在庫管理】ワークフローを使わずオートメーションのボットで入出庫履歴を記録する

AppSheetで在庫管理アプリを作るシリーズ。オートメーション機能のボットを使って入出庫履歴の記録と残高ゼロ在庫の削除を同時に行うプロセスを構築します。

はじめに

在庫管理アプリで食料品のストックを管理し始めて数ヶ月。実際かなり便利です。忘れていた食材も出てくるし、スーパーでも買い漏れ、買いすぎがなくなっています。

ところで家族に好評なこのアプリ、「在庫だけでなく入出庫の履歴をつけて欲しい」との要望が。いつ何が出入りしているのか「見える化」したいとのこと(最初は要らないって言っていたのに)。

ということで、これまでに作った在庫管理アプリに、

  • 入出庫履歴の記録
  • 入出庫にかかわるレポートの作成と表示
をさせる機能を追加させることにします。

前編は入出庫履歴の記録について、ワークフローとアクションを使って実装、後編は記録された入出庫履歴をもとにグラフなどレポートを出力してみます。

在庫管理アプリについては、こちらの記事もどうぞ。

【AppSheetで在庫管理】ノーコードで食料在庫管理アプリを作る(はじめに)

素人がノーコードで在庫管理アプリを簡単に作る・・・実際に作ってみるとどうなるのか?AppSheetを使って食料品の在庫管理アプリを作ってみました。実際の開発時間は、夕食後の時間を使って一週間程度です。

機能のイメージ

作成に取り掛かる前に、新しい機能のイメージを考えてみます。

  • 履歴の記録:データベースとなるスプレッドシートに「入出庫履歴シート」を追加、一件ごとに記録する
  • 履歴記録のトリガーイベント:入出庫フォーム(アプリではInventory Listフォーム)の在庫数量の増減をトリガーイベントとする
  • WorkflowとActionで機能を構成
  • AppSheetのグラフ機能を使う

では、早速作成に取り掛かります。

データベースを改修

まずはデータベースに履歴記録用のシートを追加します。Googleスプレッドシートでシートを追加し、Inventory Listの列名と同じものを列に設定します。

次に、Inventory Listを一部改修します。数量変更前の数量を記録する列を追加します。ここでは「Previous Quantity」としました。この列と数量の列(「Quantity」列)を比較することで、差分が入出庫の履歴として記録されるという仕組みです。

スプレッドシートができたら、AppSheetのアプリに反映させます。

テーブルをアプリに追加

アプリとスプレッドシートがシンクロしていると、DataメニューのTablesタブ画面に追加したシートをテーブルとして取り込むボタンが出てきます。


AppSheetでアプリにシートを追加で取り込む


このボタンを押すと、新しいテーブル「Track Record」が作成されました。

なお、「Track Record」テーブルと「Inventory List」テーブルは列が同じですが、データ型を合わせておく必要があります。ここでは、日付関連の「Time Check-in」列と「Expiry」列をDate型にセットします。


AppSheetのテーブル列のデータ型を変更

さらに、テーブルのキー列を「Barcode」から1番目の「_RowNumber」列に変更しておきます。キー列のデータは重複できないため、同じ商品を複数回入出庫しようとするとエラーになります。


AppSheetのテーブルのキー列を変更する


細かい点ですが、データ型が違うと想定通りのデータが渡されず、正しい履歴が記録されない可能性があります。

テーブルに列を追加

次に、DataメニューのColumnsタブから、対象のリストとしてInventory Listを選び、「Regenerate Structure」ボタンを押します。


AppSheetでスプレッドシートの変更をアプリのテーブルに反映させる

「Are you sure?」とボタンが変わったらそのまま押します。
Inventory Listテーブルに「Previous Quantity」列が追加されました。

AppSheetでテーブルに列を追加する

データベースの改修は完了です。

変更前数量の記録

次に、入出庫前の数量をあらかじめ記録するよう、「Previous Quantity」列に数式を入れます。AppSheetでは、列の名前の前に「[_THISROW_BEFORE].」とつけることで、テーブルの変更前(変更後も)データを取得することができます。便利な機能ですね。

「Previous Quantity」列のFormulaに以下数式を入力します。


[_THISROW_BEFORE].[Quantity]


Expression Assistantでは以下の通りです。

AppSheetで数値変更前のデータを取得する

これで、入出庫直前と直後の数量を記録することができるようになりました。この差分が入出庫履歴ということになります。

入出庫履歴を記録する

いよいよ、入出庫履歴をTrack Recordシートに記録していきます。入出庫があるたびに、商品情報、入出庫数量、入出庫日が記録されるようにします。

AppSheetでは、Inventory Listテーブルで在庫数量に変化があった場合に履歴を記録させるように、ワークフローとアクションを設定します。

ワークフローとアクションについては、以下記事もご参照ください。

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

AppSheetで食料品の在庫管理アプリを作る。アイテムのバーコードを読み取り、既知の商品か新規のものかを判別、それぞれに対応するフォームに遷移させます。

【AppSheetで在庫管理】アクションを設定する

AppSheetで食料品の在庫管理アプリを作る。アプリのアクション機能を使って、バーコード読み取り時のイベントとアクションを起動するタイミングについて設定します。

アクションを設定

ここでは数量に変化があった際に、アプリにどのような挙動をさせるか決めるアクションを先に作ります。ワークフローを設定するときに対象となるアクションを選択するためです。でも、アクションがなくてもワークフローは設定できますので、順番は大きな意味はありません。

BehaviorメニューからActionsタブを選び、New Actionボタンを押して新しいアクションを作成します。


AppSheetで新しいアクションを作成する

次にアクションを具体的に設定していきます。

アクションの種類は、「Data: add a new row to another table using values from this row」を選びます。これにより、Invenoty Listテーブルのデータを使って、Track Recordテーブルに行を追加することができます。従い、データを追加する先は「Track Record」です。

下の「Set Set these columns」欄で、どの列のデータを新しいテーブルのどの列に渡すか指定します。一つ一つ設定するので面倒です。全ての列のデータを渡す必要もないかもしれません。

AppSheetでアクションの条件を設定する

Quantity列については、入出庫履歴として数量の変動分を記録します。数式として


[Quantity] - [Previous Quantity]


と指定しました。これにより、数量変動マイナス=出庫、プラス=入庫となります。

続くTime Check-inはここでは入出庫日とするべく、TODAY()関数を入れます。その他の列は、とりあえずそのまま渡してしまうことにしました。


AppSheetで他のテーブルにデータを渡す

最後に、このアクションを表示させないように設定します。「Appearance」の「Prominence」欄で「Do not display]を選択します。

AppSheetでアクションを表示させないよう設定する

アクションの設定ができました。

ワークフローを設定

数量に変化があった際にアクションを起動させるワークフローを作ります。

BehaviorメニューからWorkflowタブを選んでNew Workflow Ruleボタンを押し、新しいワークフローを作成します。


AppSheetで新しいワークフローを作成する

起動条件は、Inventory Listテーブルで全ての変化があったとき、さらに数量(Quantity列)が変更前数量(Previous Quantity列)と異なるときにアクションを起動するよう、Conditionを以下のように指定します。


AppSheetでワークフローの条件を指定する

引き続き、ワークフローで起動するアクションを設定します。

「Run these tasks...」欄に移動し、名前の設定、カテゴリーの選択、起動するアクションの選択をします。


AppSheetでワークフローにアクションを設定する


これで設定完了です。

試してみる

では、いよいよ入出庫履歴が記録されるか試してみます。きちんと記録されれば、スプレッドシートのTrack recordシートが更新されていくはずです。サンプルデータとしてキユーピーマヨネーズを入出庫してみました。


AppSheetで在庫管理、入出庫履歴を記録させてみた

入出庫したアイテムが逐一記録されるようになりました。入出庫数量、タイミングも記録されています。このデータを使って、分析やグラフの作成ができそうですね。

後編の、「【AppSheetで在庫管理】在庫データをグラフやリストで表示する」に続きます・・・

参考サイト

以下サイトを大変参考にさせていただきました。ありがとうございます!

AppSheetで在庫管理アプリをノーコードで作る - アクションとワークフローで入出庫履歴を登録する

オートメーション機能を使った方法もあります

ここまで読んでいただいたにもかかわらず恐縮ですが、AppSheetのワークフロー機能はオートメーション機能に統合されていくようです。ワークフローを使った方法と同じ機能を発揮する、オートメーションによる入出庫履歴の記録については、以下記事をぜひご覧ください。

【AppSheetで在庫管理】ワークフローを使わずオートメーションのボットで入出庫履歴を記録する

AppSheetで在庫管理アプリを作るシリーズ。オートメーション機能を使って入出庫履歴の記録と残高ゼロ在庫の削除を同時に行うプロセスを構築します。


シリーズ目次

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


その11:おわりに
その12:ワークフローとアクションで入出庫履歴を記録

このブログを検索

最新記事はこちら

【Africa Daily】アフリカは太陽光をどうするつもりなのか?

(Unsplash) 今日のエピソード BBC World Service - Africa Daily, How is Africa doing with solar power? Millions across Africa have no access to elect...

自己紹介

そろそろネットで何かやってみるか、という程度。のんびり、てきとーに。