-->

【AppSheetでゴルフスコア管理】4:仮想列を使って集計・平均を計算

2022/10/02

Appsheet

t f B! P L

【AppSheetでゴルフスコア管理】4:仮想列を使って集計・平均を計算
(写真AC)


ノーコードアプリ開発ツールAppSheetを使ってゴルフスコア管理アプリを作ってみるシリーズ、今回は全6回の第4回、仮想列を使ってスコアを集計・平均値を計算します。前回の第3回は、AppSheetでスコアデータの入力フォームをカスタマイズしました。スコアデータの入力が準備できたら、次は集計と分析の準備です。

【AppSheetでゴルフスコア管理】3:他のテーブルのデータを参照できるようにする

ノーコードアプリ開発ツールAppSheetを使ってゴルフスコア管理アプリを作ってみるシリーズ、他のテーブルのデータをref型で参照できるように設定します。また、データの初期値も設定しておきます。

AppSheetのUIが変更になりました

2022年10月よりAppSheetのUIが新しくなっていますが、このブログ記事のUIは更新前のものになっています。AppSheetではUIを新旧切り替えすることが可能です。記事の画像のUIと実際のUIが異なる場合はUIの切り替えを試してみてください。切り替えは以下のボタンを押すとできます。

AppSheetの新旧UIをボタンで切り替える


何をカスタマイズする?

この回では、仮想列を使ったスコアの集計・平均値の計算のため、以下の設定をしていきます。

  • 仮想列の作成と数式の入力
  • 自動生成された仮想列のリストを使って平均値を計算

仮想列とは

仮想列(Virtual Column)は、AppSheetの中で作られるテーブルの項目です。仮想ですので、データベースとなるスプレッドシートには反映・記録されませんが、実際の列・項目と同じような動きをさせることができます。

AppSheetでは、仮想列の主な使い方として以下のようなものが挙げられています。

  • 苗字列と名前列を合成して、「氏名」列にする
  • 条件設定して、携帯電話番号が登録されているときは携帯電話、登録されていない場合はその他の電話番号を「電話番号」とする
  • 複数条件判断として、数量・金額いずれかが閾値を上回る場合に、「重要取引」とする
この他、AppSheetにより自動生成される仮想列もあります。Ref型を使って参照されたテーブルの紐付け用の列などがあります。自動生成された仮想列は削除することができますが、アプリを更新するとまた自動生成されて、完全に削除することは(Ref型など元になるデータが削除されるまで)できません。

仮想列を使った合計の計算

18番ホールまで全てスコアを入力したら、合計スコア・合計パットを算出する必要があります。ここでは、スコアデータテーブルで、スプレッドシートには用意していない仮想列を使って、スコアとパットの集計をします。OUTとINそれぞれ9ホールずつ集計し、二つを足し合わせて合計スコア・パット数を計算します。

テーブルに仮想列を作る

仮想列は、スコアデータテーブル詳細設定画面の右上「Add Virtual Column」ボタンを押します。


【AppSheetでゴルフスコア管理】テーブルに仮想列を作る

列の設定詳細ウィンドウが表示されます。

仮想列に数式を入力する

列の名前と数式を入力します。数式は、1番から9番ホールまで、スコアを足し上げます。関数などは使わずに合計します。

数式は以下の通りです。入力が大変ですので、同じ項目名になっていればコピーしても使えます。


[スコア1]+[スコア2]+[スコア3]+[スコア4]+[スコア5]+[スコア6]+[スコア7]+[スコア8]+[スコア9]


【AppSheetでゴルフスコア管理】仮想列の詳細設定

入力が完了したらウィンドウ右上の「Done」ボタンを押して保存します。テーブルの一番下の項目に仮想列が追加されました。


【AppSheetでゴルフスコア管理】テーブルに仮想列が追加された

同じように、INのスコア合計のための仮想列も作成します。INスコア合計の数式は以下の通りです。


[スコア10]+[スコア11]+[スコア12]+[スコア13]+[スコア14]+[スコア15]+[スコア16]+[スコア17]+[スコア18]


INスコア合計の列もできたら、スコア合計の列も作成します。数式は、


[OUTスコア合計]+[INスコア合計]


になります。

【AppSheetでゴルフスコア管理】仮想列を使ってスコア合計を計算

同じ要領で、パット数も集計します。「OUTパット合計」「INパット合計」「パット合計」の仮想列を作って、数式を入力します。

OUTパット合計の数式は以下の通りです。


[パット1]+[パット2]+[パット3]+[パット4]+[パット5]+[パット6]+[パット7]+[パット8]+[パット9]


続いてINパット合計の仮想列も作ります。数式は以下の通りです。


[パット10]+[パット11]+[パット12]+[パット13]+[パット14]+[パット15]+[パット16]+[パット17]+[パット18]


そして、パット合計を入力します。数式は


[OUTパット合計]+[INパット合計]


となります。設定すると以下のようになります。


【AppSheetでゴルフスコア管理】パット数を集計する仮想列を作成した

なお、データ型が「Unknown」など「Number」になっていない場合には、Numberに変更しておきましょう。

仮想列を使った平均スコアの計算

続いては、コースごとにプレー結果の平均スコアを算出します。いくつものコースを回ると、どのコースのスコアが良いのか知りたくなったりしますね。

こちらはコースデータテーブルで計算を行います。

コースデータテーブルを見ると、一番下に仮想列「Related スコアデータs」ができていることがわかります。


【AppSheetでゴルフスコア管理】他のテーブルを参照することで自動生成された仮想列


これは、スコアデータテーブルでRef型の項目を作成し、コースデータを参照したことによりコースデータテーブルに自動で生成された仮想列です。この仮想列は、コースデータの各行に対応するスコアデータを参照するリストになっています。つまり、あるゴルフコースでプレーしたスコアデータがこの項目でリスト化されている、ということになります。

このリストを使って、各コースの平均スコアを計算します。

まず、平均スコアを計算する仮想列を作ります。そして、平均スコアを算出する数式を入力します。

数式は以下のように入力します。[Related スコアデータs]で参照されるリストの[スコア合計]項目の値を平均する、という意味になっています。


AVERAGE([Related スコアデータs][スコア合計])


【AppSheetでゴルフスコア管理】リスト型仮想列の平均値を計算する

データ型は、平均値でもあるので小数点つき数値であるDecimal型にしてみました。

次は何する?

ここまででテーブルのカスタマイズは一通りできました。お疲れ様でした。他にも追加や分析したい項目があれば、さらにカスタマイズしていくことも可能です。

というところで、次回はアプリ画面のカスタマイズに進みたいと思います。スコア推移グラフやコースごとのプレー履歴を表示させ、だいぶアプリっぽい感じにしてみます。

【AppSheetでゴルフスコア管理】5:アプリの表示データをカスタマイズ

ノーコードアプリ開発ツールAppSheetを使ってゴルフスコア管理アプリを作ってみるシリーズ、アプリの表示画面をカスタマイズしてインラインビューの設定をします。

スポンサーリンク

最短距離で目標達成できるプログラミングスクール


このブログを検索

最新記事はこちら

【Glideで簡単アプリ作成】ノーコードでかんたんカウンターアプリを作る

 ノーコードアプリの作成は簡単、というけれど実際に作るとアプリ画面の設定やテーブルの定義、イベントの設定など案外手間がかかったりするものです。ここでは、ノーコードツールのGlideを使って、簡単なアプリを簡単に作ってみます。 一日にやってみた回数をカウントするアプリを作る ここで...

ラベル

自己紹介

数学苦手な文系が、そろそろネットで何かやってみるか、という程度。のんびり、てきとーに。