【AppSheet】連番の設定方法。プラス1ずつ増えるNo(# ナンバー)やidなどの設定方法|MAX関数の使い方を実例で解説(わかりやすい、初心者向け)

app sheet アップシート appsheet-prograshi(プロぐらし)-kv AppSheet
記事内に広告が含まれていることがあります。


AppSheetでアプリを作っているときに、キーに1,2,3,4,,,,,というようなプラス1づつ増える連番の数字を設定したいことがあります。

ここではカラムに連番を設定する方法についてまとめています。


MAX関数を使う

指定したカラムの数値が1づつ増えるように設定するには、MAX関数を使うことで実現できます。結論的には、「INITIAL VALUE」に以下の式を記述します。※「FORMULA」ではありません。

MAX (テーブル名[カラム名])+1


これで連番の設定が完了です。

参考

FORMULAとINITIAL VALUEはどちらも数式を入力できるけど、何が違うの?と疑問に思った方は下記をご参考ください。

(参考)【AppSheet】FORMULAとINITIAL VALUEの違いは何か?いつどう使えばいいかを実例で解説


EDITABLE?をオフにする

カラムで連番に設定したものをキーに設定していたり、あるいは完全に固有で書き換え不可にする場合には、EDITABLE?のチェックも外しておく必要があります。

ただチェックを外すことでも対応可能ですが、明示的に「EDITABLEではない!」ということを示すために以下のように設定するとよりわかりやすくなります。


この設定をするには、カラムの設定メニューを開いて、「Editable?」の数式に「= false」と記載します。

右上の「Done」をクリックすれば設定完了です。


以下では、ここで使用した数式の解説をします。



数式は何をしているか?MAX関数とは何か

ここで使っているMAX関数とは引数で指定したリスト中から、最大の値を返す関数です。

MAX(リスト)


今回使用した数式は以下になります。

MAX (テーブル名[カラム名])+1


MAXの引数のリストとして、テーブル名[カラム名]を指定しています。これは、指定したテーブルの中のカラムにあるすべてのデータを指しています。

MAX関数で最大値をとりだし、その値に「+1」するという処理になります。


実例

例えば、「ユーザー一覧テーブル」の「Noカラム」の現在の最大値を取得し、それに+1した値を設定するには以下のようにINITAL VALUEに数式を記述します。

MAX (ユーザー一覧[No])+1


MAX関数のそのほかの使い方

参考としてMAX関数のそのほかの使い方を紹介しておきます。

数値をベタ打ちで指定

使うことはないと思いますが、LIST関数を使って数字や文字列をベタ打ちすることもできます。

MAX(LIST(1, 2, 3))


SELECTとの併用

MAX関数をSELECT関数と一緒に使うことがよくあります。

MAX(SELECT(テーブル名[カラム名], 条件式,  [重複の有無])) 


実例1

例えば、条件式を「true」、重複の有無を省略すると次のような記述になります。

MAX(SELECT(テーブル名[カラム名], true)) 

これは、指定したテーブルの中のカラムにあるすべてのデータを指しています。すなわち以下と全く同じです。

MAX (テーブル名[カラム名])



実例2

条件式で他のカラムの値が〇〇の行だけを選択することもできます。

MAX(SELECT(ユーザ一覧[No], [都道府県]="東京", true)) 

これは、ユーザー一覧テーブルの都道府県カラムの値が「東京」となるもので、同じくユーザー一覧テーブルのNoカラムの値を重複除外でリスト化し、MAX関数で最大値を表示する数式です。


実例3

更に複雑なものだと以下のような数式があります。(//番号は解説で分かりやすくするためのものです。コピペする場合は削除してください)

MAX(  //5
  SELECT(   //4 
    販売[割引額],
    AND(  //3
      NOT([顧客].[従業員?]),       //1
      ([販売日] > ( EOMONTH(TODAY(), -2) + DAY(TODAY())))  //2
    )
  )
)

SELECT関数では、第一引数で指定したテーブル名が他の引数のカラムの元となるテーブルとして引き継がれます。

このため、販売テーブルにおいて、(1)顧客カラムの参照先(ref先)の従業員カラムの値がtrueでない、すなわち従業員以外の顧客で (2) 販売日カラムの値が1か月以内の、(3)両方の条件を満たす、(4)割引額カラムの値のリストを取得し、(5)最大値を求める という処理になります。


(参考)AppSheet Help MAX関数



連番をキーに設定するときの注意点

なお、複数人が同時にAppSheetを利用する場合は、MAX関数を使って連番のidを設定する方法は推奨されていません

同時に登録があった場合、同じ数値が設定されてしまう可能性があるためです。

一意の値を生成してくれる「UNIQUEID関数」や「RANDBETWEEN関数」を使用します。

シートの行番号に対応した「_RowNumber」も行の追加や削除で番号が変わるリスクがあるため、KEYとしての設定は推奨されていません。

(参考)AppSheet Help What is a key?


タイトルとURLをコピーしました