本記事ではbAppSheet でよく使う関数として、
条件分岐を行うためのIF関数・IFS関数・SWITCH関数
フォーマットを行うためのTEXT関数
画面遷移を行うためのLINKTO系の関数
について紹介します。
また、それらの関数を実際に試すことができるサンプルアプリを用意したので、ぜひ実際に関数の挙動を確かめながら理解を深めていってください。
サンプルアプリはこちら。
目次から関数を選択して「関数を試す」ボタンを押すと、フォーム画面上で関数の挙動を確かめることができます。また、AppSheet アプリなので、スマートフォンからも試しやすいです。
条件分岐を行う
IF関数・IFS関数・SWITCH関数は条件分岐を行うための関数です。
IF関数
IF関数は最もスタンダードな条件分岐関数です。第一引数の条件式の結果に応じて出力する値が切り替わります。第一引数として与える条件式はTRUEまたはFALSEの値(Yes/No式)である必要があります。
少し蛇足ですが、プログラミングでは「TRUE または FALSE のどちらかの値をとるデータ」のことを「ブール値」や「Boolean」といいます。AppSheet ではブール値のことを「Yes/No式」と言うのですが、式として扱う際は Yes/No でなく TRUE/FALSE で記述する必要があります。
IFS関数
IFS関数は複数の条件を順番にチェックするような場面で活躍します。「条件式」と「その条件式がTRUEだった場合に出力する値」をセットで付け足していくことができます。IF関数で複数の条件による分岐を実現しようとするとIF関数が何重にも重なっていってしまうのですが、IFS関数を利用するとすっきりと記述することができます。全ての条件式がFALSEの場合は何も出力しないのですが、IFS( … , TRUE, “デフォルト値”)のように末尾に「TRUE」と「デフォルト値として出力したい値」をセットで与えることで、必ず何らかの値を出力するような制御が可能です。
SWITCH関数
SWITCH関数は取りうる値の候補が決まっている場合の条件分岐に便利です。今日の曜日で処理を分岐するようなケースがイメージしやすいでしょうか。第一引数の判定対象の後に「比較対象」と「判定対象と比較対象が一致した際に出力する値」のセットを付け足していくことができます。これらのセットの後ろに最終引数としてデフォルトの出力を指定することができます。比較対象の全てが判定対象と一致しない場合は、最終引数を出力します。
フォーマットを行う
文字列を扱う関数はいくつか用意されていますが、ここでは文字列をフォーマットする、TEXT関数について紹介します。
TEXT関数
TEXT関数はいろいろな値のフォーマットを行う関数です。フォーマットとは「決まった形式に整えること」です。第二引数としてフォーマット書式を指定する方法と、指定しない方法があります。
第二引数としてフォーマット書式を指定しない場合は、TEXT関数がフォーマット書式を自動で推測してフォーマットを行います。フォーマット書式は列の値などのアプリ側の設定や、ユーザーが利用しているデバイスの設定に依存します。数値の形式を統一したい場合などに利用します。
TEXT関数が真価を発揮するのは日時のフォーマットです。第二引数としてフォーマット書式を指定することで、日時のフォーマットを行うことができます。日時のフォーマットとは例えば、「2023/01/02 03:04:05」という日時を「2023年1月2日 3時4分5秒」という書式に変換することです。この変換を行うには TEXT("2023/01/02 03:04:05", "YYYY年M月D日 H時M分S秒") のようにします。この "YYYY年M月D日 H時M分S秒" のような文字列でフォーマット書式を指定します。YYYY や M のような記法をフォーマット文字列と言います。TEXT関数のフォーマット書式で利用できるフォーマット文字列の一覧は以下の通りです。一番右の列は TEXT("2023/01/02 03:04:05", [フォーマット文字列]) の結果を示しています。
表:TEXT関数のフォーマットで利用できるフォーマット文字列一覧
フォーマット文字列
|
説明
|
|
YY
|
|
23
|
YYYY
|
|
2023
|
M
|
|
1
|
MM
|
|
01
|
MMM
|
|
|
MMMM
|
|
|
D
|
|
2
|
DD
|
|
02
|
DDD
|
|
|
DDDD
|
|
|
H
|
|
3
|
HH
|
|
03
|
M
|
|
4
|
MM
|
|
04
|
S
|
|
5
|
SS
|
|
05
|
AM/PM
|
|
"AM"
|
A/P
|
|
"A"
|
注意事項として、第二引数としてフォーマット書式を指定する場合は、第一引数は日時の値である必要があります。数値をフォーマット書式を指定してフォーマットすることはできません。
画面遷移を行う
「ボタンを押したら別のビュー(または他のアプリ)に遷移したい」「アプリのホーム画面を作成して、そこからいろいろなビューに遷移できるようにしたい」「事前入力されたフォーム画面に遷移したい」「既存のレコードの編集画面に遷移したい」
こういった要件を叶える際に必要なのが、LINKTO系の関数です。
画面遷移の基本
AppSheet で画面遷移を実現するには、アクション(Actions)を利用します。新しくアクションを作成して「Do this」の項目で「App: go to another AppSheet app(他の AppSheet アプリを開く)」か「App: go to another view within this app(このアプリ内の他のビューを開く)」を選択します。これらの項目を選択した後、直下に出現する「Target」の項目で遷移先のアプリやビューの名前を指定するのですが、この際ディープリンクと呼ばれる形式で指定する必要があります。
LINTO系の関数は関数と引数の値に応じたディープリンク(= App型の値)を返します。ディープリンクとは決まった形式の文字列で、アクションを利用して画面遷移を行う際には、Target としてディープリンクを指定する必要があります。LINKTO系の関数はあくまでもディープリンク形式の文字列を返す関数であり、画面遷移はアクションによって行う必要がある点がポイントです。
AppSheet で画面遷移を設定する手順をまとめると以下の通りです。
① 画面遷移するためのアクションを新しく作成する
「Action name」 は分かりやすいものを設定します
「For a record of this table」には画面遷移アクションを設定したいビューに紐づいているテーブルを選択します。AppSheet ではビューやアクションは必ずひとつのテーブルと紐づいています。
「Do this」では「App: go to another AppSheet app」や「App: go to another view within this app」を選択します。
「Target」では遷移先についてのディープリンクを設定します。ここではLINKTO系の関数を利用することができます。
サンプルアプリでは「関数を試す」アクションで関数ごとのページへ遷移するようにしているのですが、その設定は以下のようになっています。
② 作成したアクションを呼び出す方法を設定する
作成したアクションを呼び出す方法にも複数あります。通常のボタンとして設定して Detailビューから呼び出すこともできますし、ビューの設定から Behavior > Event Actions を開くと「行を選択する」「フォームを保存する」といった特定のイベントによってアクションを呼び出すように設定できます。
サンプルアプリの「関数を試す」アクションは「目次_Detail」ビューのレイアウト設定から 「On Click」でアクションを呼び出すように設定しています。
ここまでを説明した上で、ここからは ① でTarget として指定する「ディープリンク」を生成するためのLINKTO系の関数を4つ紹介します。ただアプリやビューへ遷移するだけでなく、特定のレコードにフォーカスするように指定することができるところがポイントです。
LINKTOAPP関数
LINKTOAPP関数は他の AppSheet へ遷移するためのリンクを作成します。
アプリIDはブラウザでアプリを開いた際のURLに含まれています。例えば https://www.appsheet.com/start/c37bc8a4-6b53-4e71-812c-2348072cbf2e#appName=AppGallery-10305&view=Shared+with+me という AppSheet アプリへのリンクがある場合、 アプリIDは 「AppGallery-10305」 の部分です。
LINKTOVIEW関数
LINKTOVIEW関数は指定したビュー名のビューへ遷移するリンクを作成します。
アプリIDを指定することで他の AppSheet アプリの特定のビューへのリンクを作成することもできます。アプリIDの指定を省略した場合は、現在利用している AppSheet アプリへのリンクを作成します。アプリIDについての挙動は後述するLINKTOFORM関数やLINKTOROW関数でも同様なので、以降は説明を割愛します。
類似の関数としてLINKTOFILTEREDVIEW関数とLINKTOPARENTVIEW関数があります。LINKTOFILTEREDVIEW関数はデータをフィルタリングした状態のビューへ遷移するリンクを作成します。LINKTOPARENTVIEW関数は親ビュー( AppSheet で「戻る」ボタンを押した際に遷移するビュー)へ遷移するリンクを作成します。
LINKTOFORM関数
LINKTOFORM関数で指定するビューはFormビューである必要があります。LINKTOFORM関数で作成したリンクによってFormビューへ遷移した際に、フォーム内の項目を埋めた状態で遷移させることができます。
サンプルアプリでは架空の「商品」テーブルに対して新たに「商品名:メロン、単価:¥ 1000」というレコードを追加する画面に遷移します。
LINKTOFORM関数は新規レコードを作成する際に用いる関数です。既存レコードを編集するような画面遷移を行う際にはLINKTOROW関数を利用します。
LINKTOROW関数
AppSheet ではテーブルを追加すると自動で Detailビュー と Formビューが自動で生成されます。これはテーブルのレコード(一行ごとのデータ)に注目してデータを見たり編集したりするためのビューです。また、テーブルのレコードにはユニーク(一意)なキーを設定する必要があります。
LINKTOROW関数は注目するレコードをキーで指定した上で、FormビューやDetailビューへ遷移するためのリンクを作成する関数です。Formビューでは既存レコードを編集することができます。Detailビューではレコードの詳細を表示できます。
サンプルアプリでは架空の「商品」テーブルの既存のレコード(商品ID=0001)を編集するForm画面へと遷移します。
まとめ
本記事では AppSheet でよく使う関数として、
条件分岐を行うためのIF関数・IFS関数・SWITCH関数
フォーマットを行うためのTEXT関数
画面遷移を行うためのLINKTO系の関数
を紹介しました。
また、それらの関数を実際に試すことができるサンプルアプリを紹介しました。
AppSheet に関する実績やサービス詳細、価格表等についてもっと詳しく知りたい場合は、資料もご用意しておりますのでお問い合わせください。
AppSheet 資料のダウンロードへ(吉積情報サイトへ)