FileMakerスクリプト終了で処理を早期中断する設計術
スクリプト

FileMakerスクリプト終了で処理を早期中断する設計術

2026年5月22日 admin スクリプト

FileMakerスクリプトを「途中でやめる」発想が大事

FileMakerでスクリプトを書いていると、
「条件に合わないときは、ここで処理をやめたい」
「エラーが出たら、それ以上進めずに安全に止めたい」
と感じる場面がよくあります。

ところが、スクリプトの最後まで処理が流れてしまい、
意図しないレコード更新やメール送信が走ってしまうことも…。
これを防ぐための基本テクニックが「スクリプト終了で処理を早期中断する設計」です。

この記事では、難しい専門用語をできるだけ避けて、
FileMakerスクリプトを安全かつスッキリ書くための
「途中で処理をやめる」設計の考え方と、具体的な操作方法を解説します。

なぜ「早期中断」が大事なのか

長く複雑なスクリプトほど、途中で条件を満たさないケースが出てきます。
たとえば、次のような場面です。

  • 対象レコードが見つからなかった
  • 必須項目が空欄だった
  • 権限のないユーザーが実行した
  • 外部ファイルが開けなかった

こうした場合、本来は「そこで処理を終わらせたい」はずなのに、
スクリプトがそのまま続いてしまうと、
結果的に不正なデータ更新や、エラーの連鎖につながります。

逆に言うと、「条件を満たさないときはすぐ止める」
というルールを先に決めておくと、スクリプトはぐっとシンプルになり、
動作確認も楽になります。

基本は「スクリプト終了」ステップを迷わず使う

早期中断の中心になるのが、スクリプトステップ「スクリプト終了」です。
これは、その時点でスクリプトの処理を終了するための命令です。

使い方のイメージは次のような流れです。

  1. 最初に前提条件をチェックする
  2. 条件に合わなければ「スクリプト終了」
  3. 条件を満たした場合だけ、後続処理を実行

たとえば、「顧客IDが空なら処理をやめる」という場合は、
次のような構成になります。

If [ IsEmpty ( 顧客::顧客ID ) ]
    Show Custom Dialog [ "顧客IDが未入力です。" ]
    Exit Script [ Result: "ERROR: 顧客ID未入力" ]
End If

# ここから下は、顧客IDがある場合だけ実行
…メインの処理…

ポイントは、「おかしな状態なら先に出ていく」考え方で、
正常なケースの処理を、下にスッキリと並べることです。

条件チェックはできるだけ「最初にまとめて」

スクリプトの途中で「If が何度も出てきて、何をしているのか分かりづらい」
という悩みもよくあります。これを避けるには、
重要な前提条件のチェックはスクリプトの冒頭でまとめて行う
のがおすすめです。

例として、次のような前提条件を、最初にまとめて確認します。

  • 対象レコードが1件以上存在するか
  • 必須フィールドがすべて入力されているか
  • 実行ユーザーのアカウント名や権限セット

これを個別にチェックし、それぞれの条件で
「スクリプト終了」を呼び出します。
そうすることで、メインの処理部分には、
「前提条件はすでに満たしている」という前提で
素直な流れだけを書けるようになります。

戻り値で「終わり方」をわかりやすくする

スクリプトの中断をより分かりやすくするには、
「スクリプト終了」のオプションで戻り値を返す設計が有効です。

たとえば、サブスクリプトからは次のように返します。

If [ 条件NG ]
    Exit Script [ Result: "ERROR: 条件不一致" ]
End If

Exit Script [ Result: "OK" ]

メインのスクリプト側では「スクリプトを実行」ステップの
結果を変数に受け取り、その値を見て判断します。

Perform Script [ "サブスクリプトA" ]
Set Variable [ $result ; Value: Get ( ScriptResult ) ]

If [ $result ≠ "OK" ]
    Show Custom Dialog [ "処理に失敗しました:" & ¶ & $result ]
    Exit Script [ Result: $result ]
End If

# ここから先は、サブスクリプトAがOKの場合のみ実行

このように「OK / NG」といった簡単な戻り値を決めておくだけでも、
どこで中断されたかが追いやすくなり、デバッグも楽になります。

エラー発生時の「安全な抜け方」を決めておく

ファイルのインポートや、外部サービスとの連携など、
失敗する可能性がある処理では、
エラーが出たときの抜け方をあらかじめ決めておくことが重要です。

基本的な考え方は次の通りです。

  1. エラーが起こりうるステップの直後に「Get ( LastError )」で確認
  2. エラーがあれば、必要に応じてメッセージ表示
  3. その時点で「スクリプト終了」して、これ以上進ませない

簡単な例は次のようになります。

Import Records [ … ]
Set Variable [ $error ; Value: Get ( LastError ) ]

If [ $error ≠ 0 ]
    Show Custom Dialog [ "インポート中にエラーが発生しました(エラーコード:" & $error & ")" ]
    Exit Script [ Result: "ERROR: インポート失敗 (" & $error & ")" ]
End If

# エラーがなければ、後続の処理へ

このように「エラー検出 → メッセージ → スクリプト終了」という
パターンをテンプレート化しておくと、同じ考え方で
スクリプト全体を統一でき、保守性が高まります。

「早期中断」を前提にしたスクリプト設計のコツ

最後に、日常的に取り入れやすい設計のコツをまとめます。

  • 前提条件はスクリプトの冒頭でまとめてチェック
  • 条件NGなら迷わず「スクリプト終了」で抜ける
  • サブスクリプトは「OK / ERROR」などの戻り値を返す
  • エラーを想定できる処理の直後には、必ずエラー確認を挟む
  • メイン処理は「前提条件を満たした世界」だけを書く

こうしたルールをチームで共有しておくと、
誰が書いたスクリプトでも読みやすくなり、
「どこで処理が止まるのか」がイメージしやすくなります。

FileMakerのスクリプトは、つい「最後まで流す」ことを前提に
書いてしまいがちですが、むしろ「途中でやめる設計」を意識することで、
安全でシンプルなシステムに近づけることができます。
ぜひ、日々のスクリプト作成で試してみてください。

※ 本稿は、生成AIを使用して執筆しています。重要な内容については、必ずご自身でマニュアル等をご確認ください。