ノーコードアプリ開発ツールAppSheetを使ってゴルフスコア管理アプリを作ってみるシリーズ、今回は全6回の第4回、仮想列を使ってスコアを集計・平均値を計算します。前回の第3回は、AppSheetでスコアデータの入力フォームをカスタマイズしました。スコアデータの入力が準備できたら、次は集計と分析の準備です。
【AppSheetでゴルフスコア管理】3:他のテーブルのデータを参照できるようにする
ノーコードアプリ開発ツールAppSheetを使ってゴルフスコア管理アプリを作ってみるシリーズ、他のテーブルのデータをref型で参照できるように設定します。また、データの初期値も設定しておきます。
AppSheetのUIが変更になりました
2022年10月よりAppSheetのUIが新しくなっていますが、このブログ記事のUIは更新前のものになっています。AppSheetではUIを新旧切り替えすることが可能です。記事の画像のUIと実際のUIが異なる場合はUIの切り替えを試してみてください。切り替えは以下のボタンを押すとできます。
何をカスタマイズする?
この回では、仮想列を使ったスコアの集計・平均値の計算のため、以下の設定をしていきます。
- 仮想列の作成と数式の入力
- 自動生成された仮想列のリストを使って平均値を計算
仮想列とは
仮想列(Virtual Column)は、AppSheetの中で作られるテーブルの項目です。仮想ですので、データベースとなるスプレッドシートには反映・記録されませんが、実際の列・項目と同じような動きをさせることができます。
AppSheetでは、仮想列の主な使い方として以下のようなものが挙げられています。
- 苗字列と名前列を合成して、「氏名」列にする
- 条件設定して、携帯電話番号が登録されているときは携帯電話、登録されていない場合はその他の電話番号を「電話番号」とする
- 複数条件判断として、数量・金額いずれかが閾値を上回る場合に、「重要取引」とする
仮想列を使った合計の計算
18番ホールまで全てスコアを入力したら、合計スコア・合計パットを算出する必要があります。ここでは、スコアデータテーブルで、スプレッドシートには用意していない仮想列を使って、スコアとパットの集計をします。OUTとINそれぞれ9ホールずつ集計し、二つを足し合わせて合計スコア・パット数を計算します。
テーブルに仮想列を作る
仮想列は、スコアデータテーブル詳細設定画面の右上「Add Virtual Column」ボタンを押します。
列の設定詳細ウィンドウが表示されます。
仮想列に数式を入力する
列の名前と数式を入力します。数式は、1番から9番ホールまで、スコアを足し上げます。関数などは使わずに合計します。
数式は以下の通りです。入力が大変ですので、同じ項目名になっていればコピーしても使えます。
[スコア1]+[スコア2]+[スコア3]+[スコア4]+[スコア5]+[スコア6]+[スコア7]+[スコア8]+[スコア9]
入力が完了したらウィンドウ右上の「Done」ボタンを押して保存します。テーブルの一番下の項目に仮想列が追加されました。
同じように、INのスコア合計のための仮想列も作成します。INスコア合計の数式は以下の通りです。
[スコア10]+[スコア11]+[スコア12]+[スコア13]+[スコア14]+[スコア15]+[スコア16]+[スコア17]+[スコア18]
INスコア合計の列もできたら、スコア合計の列も作成します。数式は、
[OUTスコア合計]+[INスコア合計]
になります。
同じ要領で、パット数も集計します。「OUTパット合計」「INパット合計」「パット合計」の仮想列を作って、数式を入力します。
OUTパット合計の数式は以下の通りです。
[パット1]+[パット2]+[パット3]+[パット4]+[パット5]+[パット6]+[パット7]+[パット8]+[パット9]
続いてINパット合計の仮想列も作ります。数式は以下の通りです。
[パット10]+[パット11]+[パット12]+[パット13]+[パット14]+[パット15]+[パット16]+[パット17]+[パット18]
そして、パット合計を入力します。数式は
[OUTパット合計]+[INパット合計]
となります。設定すると以下のようになります。
なお、データ型が「Unknown」など「Number」になっていない場合には、Numberに変更しておきましょう。
仮想列を使った平均スコアの計算
続いては、コースごとにプレー結果の平均スコアを算出します。いくつものコースを回ると、どのコースのスコアが良いのか知りたくなったりしますね。
こちらはコースデータテーブルで計算を行います。
コースデータテーブルを見ると、一番下に仮想列「Related スコアデータs」ができていることがわかります。
これは、スコアデータテーブルでRef型の項目を作成し、コースデータを参照したことによりコースデータテーブルに自動で生成された仮想列です。この仮想列は、コースデータの各行に対応するスコアデータを参照するリストになっています。つまり、あるゴルフコースでプレーしたスコアデータがこの項目でリスト化されている、ということになります。
このリストを使って、各コースの平均スコアを計算します。
まず、平均スコアを計算する仮想列を作ります。そして、平均スコアを算出する数式を入力します。
数式は以下のように入力します。[Related スコアデータs]で参照されるリストの[スコア合計]項目の値を平均する、という意味になっています。
AVERAGE([Related スコアデータs][スコア合計])
データ型は、平均値でもあるので小数点つき数値であるDecimal型にしてみました。
次は何する?
ここまででテーブルのカスタマイズは一通りできました。お疲れ様でした。他にも追加や分析したい項目があれば、さらにカスタマイズしていくことも可能です。
というところで、次回はアプリ画面のカスタマイズに進みたいと思います。スコア推移グラフやコースごとのプレー履歴を表示させ、だいぶアプリっぽい感じにしてみます。
【AppSheetでゴルフスコア管理】5:アプリの表示データをカスタマイズ
ノーコードアプリ開発ツールAppSheetを使ってゴルフスコア管理アプリを作ってみるシリーズ、アプリの表示画面をカスタマイズしてインラインビューの設定をします。
スポンサーリンク
最短距離で目標達成できるプログラミングスクール
0 件のコメント:
コメントを投稿