見出し画像

AppSheet実践編シリーズ⑩~CONTEXT関数を使うとアプリのUIをきめ細かく制御できる件~

はじめに

 こんにちは。ソシオネットの髭晩酌です。
 めちゃ暑かった今年の夏もそろそろ終わりが近づいています。で、暑い日はなかなか温かいそばを食べる気にならなかった、という方にお伝えしたいのが、冷やしぶっかけそば+コロッケ、というメニューです。ぶっかけそばだとつゆが少ないので、コロッケがつゆを吸ってバラバラになることがないのでオススメです!
 ちなみに、ゆで太郎さんには「ぶっかけ」はメニューはありませんが、弊社の近くのゆで太郎さんだと注文時に言えば「もり」を「ぶっかけ」に変更してくれました!
※全てのゆで太郎さんで同じかどうかはわかりません。。。

 さて今回のブログは、CONTEXTという関数のお話です。
 特定の画面の場合のみ○○を表示したい、や、モバイルでアプリを使用している場合のみ○○を表示したい、というような場合に使える関数です。
 この関数を使ってアプリのUIをより使い勝手の良いものにしていきましょう!

 なお、本ブログの画面説明は前回同様「improved editor」モードにて説明していきます。


今回のシナリオ

 今回の説明で使うアプリの元となるデータを紹介します。
 超簡単なHRシステムのデータとなっており、社員テーブルから部署テーブルにRefを設定しているだけのものです。

 また、上記のデータをAppSheetに取り込ませて、idを非表示にするなどの簡単な設定だけ行った状態が以下です。
 よく見ると、社員テーブルへの新規登録時の部署選択画面に「New」が表示されており、ここから部署テーブルへの新規登録が可能となっています。

 単純にRefを設定しただけだと上記のようになりますが、このままだと「部署テーブルへの登録は部署の画面からだけにしたい!」「社員テーブルへの新規登録時に部署も併せて登録できるようなオペレーションは想定していない!」という業務要件を満たすことはできません。このような場面で活躍するのがCONTEXT関数です。
 ということで、次からCONTEXT関数を使って「New」を消す方法をご説明します。
※ちなみに社員テーブルの部署項目の設定で、Input modeをDropdownではなくButtonにすれば「New」は表示されません。

どうすればいいの?

 まず「New」が表示されている理由ですが、これは部署テーブルにAddsが許可されているためです。では試しにAddsの許可を外してみましょう。

 これにより、「New」が表示されなくなりました。めでたしめでたし。。と言いたいところですが、全然めでたくありません。当たり前なのですが、単純に部署テーブルからAddsの権限を外してしまうと、部署の一覧画面からも新規登録ができなくなってしまいました。。。

 ということで、今回の要件を満たすためには以下を実現すればよいことになります。

  • 社員登録画面では、部署テーブルに対するAddsを許可しない

  • 部署一覧画面では、部署テーブルに対するAddsを許可する

 これを実現するために、CONTEXT関数を使います。早速、「Data」メニュー>部署>TableSettingボタンを押下し、部署テーブルの権限を関数で設定できる欄を開いて以下の関数を設定しましょう。

SWITCH(
  CONTEXT("VIEW"), 
  "社員_Form", "READ_ONLY", 
  "ALL_CHANGES"
)

 上記の関数を設定することにより、以下の通り今度こそめでたく要件を満たすことができました。

詳しい解説

 では、早速指定した関数の解説をしていきましょう。以下の通り関数を分解して解説していきます。

 まず①の部分が、今回のブログのメインテーマであるCONTEXT関数です。
 CONTEXT関数は決まった引数を与えることにより、実行中のアプリに関するコンテキスト情報を返すものです。「コンテキスト」と言われてもピンとこないと思うので、日本語でいうと「状況」「状態」のように言い換えたら少し理解しやすいかもしれません。
 今回の関数だと、引数に"VIEW"を与えています。これによりCONTEXT関数は、現在のビューの名前を返します。

 ちなみにCONTEXT関数は、今回指定した"VIEW"も含め、以下のような引数を与えることができます。

AppName、Device、Host、OwnerEmail、Table、View、ViewType

 個人的には、"VIEW"以外によく使うのは"VIEWTYPE"かな、と思います。
 今回は引数に"VIEW"を指定して個別のビューの名前を返しましたが、"VIEWTYPE"だと「Form」「Detail」「DECK」「TABLE」「GALLERY」などビューの種類を返すので、同じタイプのビューに一様に同じ設定をしたい場合には、"VIEWTYPE"の方が設定が少なくてよいかもしれません。
 詳細は以下のAppSheetのヘルプを参照してください。

 次に②の部分です。SWITCH関数の構文は以下の通りです。なお、ケース2以降は条件分岐の数に応じて自由に増やせます。

SWITCH(
    検証する式,
    ケース1,値1,
    ケース2,値2,
 ・・・,
    デフォルト値
)

 意味としては、検証する式とケース1が一致していれば値1を返却、一致しない場合に検証する式とケース2が一致していれば値2を返却、、、と順番に比較していき、どのケースにも一致しなければデフォルト値を返します。

 つまり今回の関数では、現在のビューが"社員_Form"なら"READ_ONLY"権限、そうでなければ"ALL_CHANGES"権限、ということになるので、要件を満たすことができました!

 なお、今回はテーブルの権限設定欄でCONTEXT関数を使いましたが、他のいろいろな箇所でもCONTEXT関数を使うことが可能です。
 例えば、「Data」メニュー>[テーブル名]の中で各項目ごとに設定できる「SHOW?」にCONTEXT関数を使えば、ビューごとに項目の表示/非表示を制御することが可能です。

終わりに

 本ブログでは、CONTEXT関数の使い方について簡単に説明しました。
 今回のブログで出てきた例は、実は私がAppSheetを使い始めたころに「このNew、邪魔だな。。」と思っていたのを思い出して書いたものです。
 おそらくアプリを開発する中で同じような悩みを持たれている方もいるかな~、と思い、今回のブログ執筆に至りました。
 このブログが、一人でも多くのシチズンデベロッパーの方のお役に立てれば幸いです。

、、、シチズンデベロッパーって何?という方は以下のブログもどうぞ!

 ということで、今回のブログは以上となります。ではまた次回ブログでお会いしましょう!ルネッサーンス!!

AppSheet勉強会を開催しております

 弊社主催のAppSheet勉強会を毎月開催しております。9月~10月開催分のお申込みは以下からお願いいたします。

9/19(火)【毎月第3火曜開催】実践的なスキルが学べる!AppSheetアプリ開発ワークショップ | Peatix

10/10(火)【毎月第2火曜開催】Appsheetを知ろう!初心者向けかんたんハンズオン勉強会! | Peatix

IT内製化支援、Salesforceの運用・導入、DX化推進に関するご相談をお待ちしております

 弊社では、ノーコード開発ツールを用いたIT内製化支援、Salesforceの運用・導入、および、DX化推進に関するご相談を承っております。お気軽に弊社お問い合わせサイトよりご相談などをお寄せいただければと思います。

ソシオネットHP:http://www.socionet.co.jp/
IT内製化支援支援サービス:https://socionet.co.jp/insourcing-support-service/
Salesforce最適化支援サービス:https://socionet.co.jp/salesforce-service/
DXサポーターズ特設サイト:https://socionet.co.jp/dx-supporters/
お問い合わせ:https://socionet.co.jp/contact/


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?