AppSheet小ネタ

AppSheetアプリを開発していて、調べた小ネタを紹介します。

AppSheetアプリでViewRefのアイコンを消す方法

AppSheetで、REFタイプの項目を作成した時に、ViewRefによって生成されるビューのアイコンやアクションボタンが画面に表示されます。

小さな▶マークで表示されたりするのですが、この表示をして欲しくない場合ってありますよね。

例えば、REFタイプでマスターを参照させるんだけど、データの詳細画面でこのマークが表示されると、そこからマスターデータが見えてしまうようになります。
管理者はマスターデータを見れてもいいけど、ユーザーには見て欲しくないというような場合です。

こうした時には、AppSheetエディタでActionsを開いて、非表示にしたいViewRefに関連するアクションを見つけます。
通常、アクション名には「View Ref (…)」や「View (…)」といった名前が含まれており、Systemアクションとしてマークされています。

このアクションのBehaviorセクションにある「Only if this condition is true」に「管理者だったらTRUEを返す」というようなコードを設定すればOKです。

AppSheetアプリで、現在表示されているViewが何かを知る方法

表示しているViewによって、表示項目や操作できるアクションを変更したい・制限したいことってありますよね。

そうした時には、CONTEXT()を使用して現在表示されているViewの名前や種類を取得できます。

例えば、View名を取得するには

CONTEXT("View")
(例: "Orders_Detail", "Main Dashboard" などの文字列を返します。)

Viewの種類(タイプ)を取得するには

CONTEXT("ViewType")
(例: "detail", "table", "card", "form", "map" などの文字列を返します。)

特定のView、例えば、データの詳細画面でのみ動作するアクションを定義したい場合、アクションの「Only if this condition is true」欄に以下のように記述します。

CONTEXT("View") = "データ_Detail"

AppSheetアプリで、SYSTEM GENERATEDされたDetailビューでデータの編集は出来ないようにする方法

テーブルを追加すると、そのテーブルのデータを入力するフォームと閲覧するDetailビューが自動的に追加されます。
このDetailビューを表示すると画面上には編集用のアイコンが表示されて、それをタップすると変更フォームが表示されます。

しかし、データの種類によっては、ユーザーは閲覧できるけど変更できないようにしたい場合があります。

そうした変更用のアイコンを表示させないために、DetailビューをCardタイプやTableタイプに変更するという方法も取れますが、表示自体は変えたくないという場合には、この方法は取れません。

そこで、特定のユーザーグループや特定の条件下でのみ編集を許可したい場合は、Editアクションの表示条件を設定します。

「Actions」で、テーブルに関連付けられているシステム生成の Edit アクションを見つけます。
Editアクションをクリックし、「Behavior」セクション内の「Only if this condition is true」に、TRUEを返す場合の条件式を設定すればOKです。