AppSheetで特定の値を元に列の編集可否を制御
以前作ったアプリでは、Addボタンをステータスの値を元に表示非表示を関数で制御出来ました。現在また別の社内向けアプリを作ってるわけですが、同じように今度は「ステータスの値が完了の場合は、編集できないようにしてほしい」という事だったので、Showを関数制御した時同様に、今度はEditableを制御してみようと思います。
今回利用するサンプル等
- 列の値で編集制御をする - AppSheet
- 列の値で編集制御をする - Google Spreadsheet
今回はシンプルなシートで、status列の列は完了、未完了の2つのみ。この値を変更したら、propの入力欄の入力可否を制御するのが今回の目的になります。
通常はここの設定はチェックボックスなのですが、数式で制御することが出来ます。
図:statusの値を元にpropの入力を制御します。
設定してみる
設定変更してみる
status欄はどちらかを選択するEnum型になっています。そして、その制御先であるprop列はデフォルトではチェックボックスになっていますが、右の方にあるフラスコをクリックすると、数式入力になります。ここで以下の数式を入れてみます。
- Dataのシートに於いて、prop列の隣の鉛筆マークをクリックする
- update behaviorの中にあるEditableの右側にあるフラスコアイコンをクリックする
- 数式入力になるのでクリックする
- 以下のような数式を入力する
1IF([status]="完了",false,true) - Doneをクリックして閉じる。
これでロジックは構築完了です。
図:フラスコをクリックすると数式入力となる
図:数式を入力して制御をする
使ってみる
さて、これで仕掛けは終わったので、データの編集画面を開いてみます。適当なレコードを開いて、Editボタンをクリックします。この時のstatus欄の値の変更によって、入力欄が入力可になったり不可になるハズです。
数式でいかようにも制御ができるので、フォームを構築する時の選択条件によって分岐させて、入力不可にしたりといったケースで非常によく使うパターンです。もちろん、EditableではなくShowのほうを制御する方法も同じ手法になるので、入力可否ではなく表示・非表示にしたほうが良いケースもあります。
非常に基礎的なテクニックなので覚えておいて損はありません。
図:statusの選択で入力可否が制御された