第51話 新しいレコードを作成するスクリプトを作ってみる

エヌ・ケイ・カスタマイズの大村です。

今回は、スクリプトに組み込む機能を考えていきます。

スクリプトは、一連の手順を丁寧に積み重ねていくことで、作業を自動化できる機能です。FileMaker には、たくさんの手順があらかじめ用意されていて、それらをうまく組み合わせてスクリプトを作ることになります。
それでは、自動化したい作業を考えるにあたって、「タスク一覧」や「タスク詳細」といった実際に作業を行うレイアウトを眺めながら、作業のシチュエーションを考えてみましょう。

タスク一覧
タスク詳細

上記レイアウトを眺めていると、FileMaker を知っている人なら、すぐにでも入力作業が始められそうです。例えば、ステータスツールバーから新規レコードを追加したり、レコードを削除すれば、一通りのことは出来てしまいます。しかし、カスタムApp は他の人も使いはじめるかもしれません。そのとき、

『「タスク詳細」レイアウトで「削除したいタスク」を表示してから、ステータスツールバーで……』

などの操作方法を伝えて、それが必ず守られるでしょうか。誰かが操作手順を間違えて大切なレコードを削除したり自分もうっかりすることがあるかもしれません。
そんな時、「タスク詳細」レイアウトに削除ボタンがあれば、『ここからタスクを削除できるんだな』とユーザが理解できます。場合によっては、間違った操作を防ぐためにはステータスツールバーを非表示にした方が良いかもしれません。

このように、必要な機能をスクリプトで作成し、ボタンに割り当ててレイアウト上に置くことは、作業を円滑にして想定外な操作を防ぐことができるという利点があります。
まずは、簡単なスクリプトから考えてみましょう。

新規レコードを作成するためのスクリプト

第49話 スクリプトの作成で、「新規タスク作成」というスクリプトを作成しました。これを題材に、新規レコードを作成するスクリプトを考えてみましょう。(演習ファイルの「12 章開始時」フォルダの中のファイルをベースに進めていきます。)

レイアウトモードに切り替えて、ボタンをクリックしていけば、スクリプトの編集までスムーズにたどり着けます。

新規タスク作成


さて、「演習タスク.fmp12」の「タスク一覧」レイアウトの「新規タスク」ボタンに割り当てたスクリプトの中身をみてみると、

(1)「 タスク一覧」レイアウトでタスクの「新規レコード作成」
(2)「 タスク詳細」レイアウトへ切り替える

という内容でした。これは言い換えると、次の内容です。

(1) 新しいレコードを作成する
(2) 入力に便利なレイアウトに切り替える

このままでよいでしょうか。ポイントは、

常にレイアウトに指定されているTO を意識して、適切な動作を考えることです。

現在、「新規タスク」ボタンは、「タスク一覧」レイアウト上に配置されています。これがもし誤って、「担当者」テーブルのTO が指定されているレイアウトにこのボタンが置いてあったら、どうなるでしょうか。ボタンをクリックしても「タスク」レコードは作成されません。「担当者」テーブルに新しい担当者レコードが作成されてしまいます。ある意味、誤作動の原因になってしまいます。


誤作動を防ぐためには、手順に注意する必要があります。適切な手順は、

(1) 目的のレイアウトに切り替える
(2) 新しいレコードを作成する

これなら、「レコードを作成したいTO が指定されているレイアウト」に切り替えてからレコードを作成しているので確実です。また、あらかじめ詳細レイアウトに切り替えてあるため、スクリプトの完了後、すぐに詳細レイアウトでの作業が始められます。

スクリプトを編集して、この順番を入れ替えましょう。ドラッグアンドドロップで入れ替えられます。


入れ替わりました。

スクリプトステップの順番入れ替え後


常にレイアウトに指定されているTO を意識して、適切な動作を考えることです。
大事なことなので、2回申しあげました<(_ _)>

レコードを削除するスクリプト

次に「タスク削除」機能を作ってみましょう。ここで言う「タスク削除」とは、「タスクテーブル」におけるレコードを削除するという意味です。

レコード削除は新規レコード作成と違い、別のTO のレイアウトから実行することは、あまり想定されません。ですから、手順は、

(1) 現在表示されているレコードを削除する

という1 つだけです。そしてボタンが配置されているレイアウトのTO のレコードであればよさそうです。
機能を整理すると、


材料 どのレイアウトから実行するか、つまり、どのTO なのか

  → ボタンが配置されているレイアウトで実行する
  → レイアウトに指定されているTO のレコードが対象

順序 どのような順番で作業するか(命令と結果)

  → 表示中のレコードを1 件削除

成功の条件(完了) どうなったら成功したか(どのような結果が出たら良いのか)

  → レコードが1 件削除されてレイアウトはそのまま

となります。

それでは、1行だけのスクリプトを作ってみましょう。今回は、先にスクリプトを作成して、後からボタンを作って割り当ててみましょう。

(1) スクリプトワークスペースを開きます。

  Windowsなら、Ctrl+Shift+S 、Mac なら、command-shift-S です。


(2) 削除のスクリプトを作成し、保存します。
  ・スクリプト名は「レコード削除」
  ・スクリプト行は、1 行だけです。
   第49話 スクリプトの作成 をご参考に。

スクリプトを作成


※今回はスクリプトステップに直接「レコード」と入力して、オートコンプリートからステップを追加した画像です。


(3) 「タスク詳細」レイアウトに「削除」ボタンを作成してスクリプトを割り当てます。

  a. [ステータスツールバー]のボタンアイコンをクリックし「ヘッダ」パートにボタンを作成します。
  b. [ボタン設定]ダイアログを設定します。
  c. [何もしない]をクリックしてプルダウンから「スクリプト実行」を選択します。
  d. [スクリプトの指定]で「レコード削除」スクリプトを選択します。
  e. [OK]ボタンをクリックします。

(4) 作業に余裕があればボタンの色を赤くします。
  a. レイアウトの右パネルを表示して「スタイル」タブを表示します。
  b. 「アクセントボタン3」を指定します。

(5) レイアウトを保存します。

レイアウトにスクリプトが配置されました。

早速、「削除」ボタンを押して、レコード削除のテストをおこないます。
(1) 「タスク一覧」レイアウトで「新規タスク」ボタンをクリックします。
(2) 新規レコードになにか入力します(「タスク詳細」レイアウトに切り替っているはずです)。
(3) 「削除」ボタンをクリックします。
  a. 「このレコードを削除しますか?」の確認ダイアログが表示されます。
  b. [削除]ボタンをクリックします。
(4) 正しく動作しているか確認してください。
  入力したレコードが削除されるはずです。

以上、レコードを作成するスクリプトと、レコードを削除するスクリプトを作成しました。
手順を意識して、適切な動作を選ぶ、という点をご理解いただけたでしょうか。
難しくて長いスクリプトも、ひとつひとつの手順の積み重ねです。
少しずつ、作業を自動化する楽しさを味わっていきましょう。


次回は、ポータルでのレコード作成と削除を行います。リレーション先のテーブルを操作することになりますので、今回よりも、もう少し手順に注意が必要になります。ちょっとした応用編として、確認していきましょう。


それではまた。

Follow me!