FileMakerは、細かなユーザー管理が行えます。
状況によっては、ログインしているユーザーに応じてその後の動作を制御したい場合があります。今回はその一例を解説したいと思います。
目次
ユーザーの識別
簡単なものとして、
- 「アカウント名」で制御する
- 「アクセス権セット名」で制御する
があります。
ここでは、「mac」というアカウント名と、「テスト」というアカウント名を例に解説していきます。
「mac」アカウントには、「完全アクセス権」を付与しています。
「テスト」アカウントには、「テスト用」というカスタムアクセス権セット名を付与しています。
「mac」用リスト画面と、「テスト」用リスト画面の作成
「住所連絡先データ」の「データベース」レイアウトを表示します。
この「データベース」レイアウトから、リスト画面に切り替える際、アカウントやアクセス権セット名によって異なる動作をするスクリプトを作成します。
まずは、「mac」アカウント用のリストレイアウトを作成します。
レイアウトモードにします。
レイアウトを選択して、「レイアウトの管理…」を選択します。
「リスト」レイアウトを選択してアクティブな状態にします。
「複製」をクリックします。
「リスト コピー」というレイアウトができました。
「編集」をクリックします。
レイアウト名を「リスト コピー」から、「管理者用」に変更します。
レイアウトの管理を閉じて、作成した「管理者用レイアウト」に切り替えます。
「管理者様」レイアウトは、「リスト」レイアウトを複製しただけですから、少しカスタマイズしていきます。
まず、ヘッダとフッタの色を変えます。
ヘッダを選択してアクティブにしてから、「塗りつぶし」を選択して、色を選択します。同様に、フッタの色も変えます。
次に、ヘッダ上のファイル名の下に、レイアウト名を追加しましょう。
ファイル名の下に配置します。
「レコードの削除ボタン」を設置します。完全アクセス権を持った「mac」アカウントしか削除ボタンのある、このレイアウトには切り替えられないようにします。
「切り替え」ボタンを右クリック、コピーして貼り付けます。
貼り付けたボタンを右クリックして、「ボタン設定」を選択します。
ボタン名を「削除」にします。
ボタン処理を選択して、もともとある「レイアウト切り替え」を削除します。
「ステップ」から、「レコード」→「レコード/検索条件削除」をダブルクリックします。
ブラウズモードにしてみましょう。
「削除ボタン」ができあがりました。
ファイルを開いたときに動作する起動時スクリプトを編集
OnFirstWindowOpenの記事で作成した「起動時スクリプト」を編集します。
ここでの目的は、「mac」アカウントでファイルを開いた場合は、「管理者様」リストレイアウトを表示させます。「テスト」アカウントでファイルを開いた場合は、通常の「リスト」レイアウトを表示させます。更に、「テスト」アカウントでファイルを開いた場合は、ツールバーを非表示にします。こうすることで、ツールバーを使用してレイアウトの切り替えを行えなくするためです。
まず、下の様なスクリプトステップを追加します。
If[Get ( アカウント名 ) = “mac”]
if関数とは、「もし〜なら」という意味で使用します。今回の場合、「もしアカウント名がmacであったら」を意味します。
「もしアカウント名がmacであったら」7の行にある、「レイアウトの切り替え」で「管理者様」レイアウトに切り替える、という動作をします。さらにツールバーを表示させます。仮にアカウント名が「mac」意外であったら、このスクリプトステップは無視されます。
Elseとは、アカウント名が「mac」意外であったらこの次に続くifステップに進むという意味です。
If[Get ( アカウント名 ) = “テスト”]
続いて、10行目のIf[Get ( アカウント名 ) = “テスト”]ですが、上記と同様、「もしアカウント名がテストであったら」下のステップに進むという意味になります。
アカウント名がテストであったら、レイアウトの切り替えを行い、「リスト」レイアウトに切り替えます。そして、ツールバーを非表示にして、表示できないようロックします。
End Ifは、Ifを終了することを意味します。ここでは、Ifを2回使用していますので、End Ifが2個入ります(13,14行目)。
動作確認をします
スクリプトを保存したら、一度ファイルを閉じます。
「テスト」アカウントでファイルを開いてみましょう。
通常の「リスト」レイアウトで、ツールバーが非表示になっています。
次に「mac」アカウントでファイルを開いてみましょう。
「管理者」レイアウトになっています。ステータスバーも表示されています。
このように、If関数を使用することで動作を制御することもできます。ボタンにスクリプトを設定して、ユーザー別に挙動を変えることも可能です。