💻

【AppSheet】Tips & Tricks

2023/04/04に公開

はじめに

AppSheetでアプリを作成した際に使った関数式などを備忘録として記録する。

Dereference

https://support.google.com/appsheet/answer/10107396?hl=en

下位のテーブルから上位のテーブルの一意の値を取得する

  • 使用例
    出席簿テーブルから会員テーブルを参照し、その会員の氏名を取得する

    出席簿:VC氏名
    FORMULA
[ID会員].[氏名]

SELECT()

https://support.google.com/appsheet/answer/10108207?hl=en

テーブルを参照し、カラムの要素が条件に該当しているデータのリストを作る

  • 使用例
    出席簿テーブルから会員テーブルを参照し、ステータスが「入会」になっている会員のリストから出席者を選択する

    出席簿:ID会員
    Type : Ref
    Type Details / Source table:会員
    Data Validity / Valid If
SELECT(会員[ID会員], [ステータス]="入会")

SELECT()で抽出したリストから、選択済みのリストを除外する(=未選択のリストを作成する)

  • 使用例
    選手テーブルから会員テーブルを参照し、ステータスの要素が「入会」になっているID会員のリストのうち、その行事(試合)に未登録の会員リストから選手を選択する

    選手:ID会員
    Type : Ref
    Type Details / Source table:会員
    Data Validity / Valid If
SELECT(会員[ID会員], [ステータス]="入会")
  - SELECT(選手[ID会員], [ID行事]=[_THISROW].[ID行事])

ANY() / SELECT()

https://support.google.com/appsheet/answer/10107399?hl=en

SELECT()で抽出したリストから、任意のデータを1つ取り出す

  • 使用例
    出席簿テーブルから会員テーブルを参照し、その会員のVC氏名を取得する

    出席簿:VC氏名
    FORMULA
ANY(
  SELECT( 会員[VC氏名], [ID会員]=[_THISROW].[ID会員])
)

ORDERBY() / SELECT()

https://support.google.com/appsheet/answer/10107362?hl=en

SELECT()で抽出したリストを昇順(または降順)に並び替える

  • 使用例
    試合テーブルから行事テーブルを参照し、区分が「試合」の行事のリストを、開催日が現在に近い順(降順)に並び替え、試合が行われる行事を選択する

    試合:ID行事
    Type : Ref
    Type Details / Source table:行事
    Data Validity / Valid If
ORDERBY(
  SELECT(行事[ID行事], [区分]="試合"), [開催日], TRUE
)

真偽値:TRUE=降順 / FALSE=昇順

COUNT() / SELECT()

https://support.google.com/appsheet/answer/10107676?hl=en

SELECT()で抽出したリストのデータの個数を調べる

  • 使用例
    選手テーブルに登録済みの選手の数を調べ、背番号を「1」から順に自動発行する

    選手:背番号
    FORMULA
COUNT(
  SELECT(選手[ID行事],[ID行事]=[_THISROW].[ID行事])
)+1

MAX() / SELECT()

https://support.google.com/appsheet/answer/10107969?hl=en

SELECT()で抽出したリストの中の最大値を調べる

  • 使用例
    その会員の出席簿の最新日が、本日のものかどうかを確認する

    会員:VC本日の出欠確認
    FORMULA
IF(
  NOT(
    MAX(
      SELECT(出席簿[開催日],([ID会員]=[_THISROW].[ID会員]),TRUE)
    )=TODAY()
  ),"未確認","確認"
)

IFS()

https://support.google.com/appsheet/answer/10107912?hl=en

3つ以上の条件分岐を行う

  • 使用例
    カレンダービューのCategoryに入れる色を、行事の区分別に決める
    行事:カラー
    FORMULA
IFS(
  [区分] = "練習", "Blue",
  [区分] = "練習試合", "Orange",
  [区分] = "試合", "Red",
  [区分] = "スタッフ", "Purple",
  [区分] = "後援会", "Green"
)

YEAR() / MONTH() / TODAY()

https://support.google.com/appsheet/answer/10107427?hl=en
https://support.google.com/appsheet/answer/10107922?hl=en
https://support.google.com/appsheet/answer/10108286?hl=en

現在の年度を算出する

  • 使用例
    開催日の年度を調べる
    行事:VC年度
    FORMULA
YEAR(TODAY()) - IF( MONTH( TODAY())<4, 1, 0)

INDEX() / WEEKDAY()

https://support.google.com/appsheet/answer/10107336?hl=en
https://support.google.com/appsheet/answer/10107424?hl=en

日付より曜日を取得する

  • 使用例
    開催日の曜日を調べる
    行事:VC曜日
    FORMULA
INDEX(
  LIST("(日)", "(月)", "(火)", "(水)", "(木)", "(金)", "(土)"),
  WEEKDAY([開催日])
)

FLOOR() / NUMBER() / TEXT()

https://support.google.com/appsheet/answer/10106537?hl=en
https://support.google.com/appsheet/answer/10108120?hl=en
https://support.google.com/appsheet/answer/10107701?hl=en

年数を計算する

  • 使用例
    2つの日付から年数を計算するには、それぞれの日付を8桁の数値に変換し差をとる。その差を10,000で割り、小数点以下を切り捨てると年数が計算できる。
    計算の例)
    今日の日付:2023/05/20
    生年月日:1980/05/03
    20,230,520 - 19,800,503 = 430,017
    430,017 ÷ 10,000 = 43.0017 ≒ 43
FLOOR(
  (
    NUMBER(TEXT(TODAY(),"yyyymmdd"))
      - NUMBER(TEXT([生年月日],"yyyymmdd"))
  ) / 10000
) & "歳"

Portfolio

https://support.google.com/appsheet/answer/11938113?hl=en

サンプルアプリとして公開する

  1. 「Manege」→「Collaborate & Publish」→「Team Work」の「Make this a public sample?」をONにし、「Change visibility」のボタンを押す。

  1. 「Settings」→「Infomation」の「Personal use only?」がOFFになっていることを確認する。
  1. 「Settings」→「Offline mode」→「Offline Use」の「The app can start when offline」をOFFにする。

  1. 「Security」→「Require sign-in」の「Ruquire user signin?」をOFFにし、「Yes,the data in this app is public」と「Yes,I am authorized to set up an insecure app」をONにする。

  1. 「Manage」→「Deploy」→「Deployment Check」の「Run deployment check」のボタンを押し、デプロイする前にアプリのチェックを行う。

  1. 「Manage」→「Deploy」→「Deployment Check」のチェック結果が表示され、各項目が「PASSED(合格)」または「WARNING(注意)」になっていることを確認して、「Move app to deployed staste」のボタンを押し、成功するとデプロイが完了。

  1. 「My Account」の「Collab」の「Portfolio Description(rewuired)」にポートフォリオの説明(必須)を記入する。「View my app portfolio」のボタンを押し、サンプルアプリがポートフォリオに公開されているかを確認する。

  1. サンプルアプリのアイコンを押し、アプリを起動させる。

  1. アプリのURLを、公開用のリンク先として使用する。

  1. 別のユーザーアカウントで、ポートフォリオに公開されたサンプルアプリを開くと、エディタ画面がグレーアウト(ユーザーの操作の対象から外れている状態)になっていることが分かる。このアプリをコピーして、自分のアプリとして取り込みたいときは、画面左上の「Deployed」の下に「Copy app」のメニューが追加されているので、ここからコピーを行う。

Add Shortcut

https://support.google.com/appsheet/answer/10104984?hl=en

スマートフォンのホーム画面にアプリのアイコンを配置する

  1. スマートフォンでAppSheetを起動し、ホーム画面にアイコンを置きたいアプリを表示させる。

  2. 画面左上のハンバーガーメニューをタップして開く。

  3. 「Add Shortcut」をタップし、Chromeを立ち上げる。

  1. 「シェア」ボタンをタップし、メニューを開く。

  2. メニュー画面より、「ホーム画面に追加」をタップする。

  3. 「ホーム画面に追加」の入力画面が開くので、アイコン名を設定して(そのままでもよい)、「追加」ボタンをタップする。

  4. ホーム画面にアプリのアイコンが配置される。

DEC2HEX(10進数,有効桁) / RANDBETWEEN(下限,上限)

https://support.google.com/docs/answer/3093137?hl=ja
https://support.google.com/docs/answer/3093507?hl=ja

16進数で8桁の乱数を発生させる

  • 使用例
    スプレッドシートやエクセルでダミーデータを用意する際、8桁のIDを乱数により設定する
=DEC2HEX(RANDBETWEEN(0, 16^8),8)

Discussion