【FileMaker】OnTimerを止めろ


FileMakerでOnTimerを使ったスクリプトを書くことがよくあります。
大抵、OnTimerでグルグル回したら、ファイルを閉じるまで回しっぱなしの事例が多いのでそんなに気にしていなかったのですが、ふと、OnTimerはいつ止めればいいのか!?と思ってTwitterで呟いてみました。

つまり、例えば間隔を0に指定したり何も指定しなかったりすれば、止まるってことですね。
結果、「ヘルプに書いてある」けれど、「わかりにくい」ということが改めて再認識しました。。。

今回のTwitterのフォロワーからの解説は、転載OKと承諾をいただきました。
ありがとうございます。

ヘルプの該当部分を見ていきましょう。

赤枠が、OnTimerを止める手段です。

それでは聴いてください。
私が[OnTimerスクリプトをインストール]ヘルプを作るなら。


OnTimer スクリプトをインストール

概要

指定したスクリプトを指定した秒数間隔で実行し続けます。

様式

OnTimer スクリプトをインストール[スクリプト名:<スクリプト名> 引数:<オプションのスクリプト引数> ; 間隔:<間隔の秒数>]

オプション

引数 説明
<スクリプト名> 実行するスクリプト
<オプションのスクリプト引数> 指定したスクリプトのスクリプト引数
<間隔の秒数> タイマーでスクリプトを実行するまでの秒数

返値

特になし

返されるエラーコード

エラーコードはヘルプに明確に書かれていませんので、デバッグした際の経験や推測になりますので、ご自身で(!)お確かめください

エラー番号 説明
0 エラーなし
1 ユーザによるキャンセル
3 コマンドが使用できません (たとえば誤ったオペレーティングシステムや誤ったモードなど)
9 アクセス権が不十分です
104 スクリプトが見つかりません

その他、実行したスクリプトからのカスタマイズされたエラーコード

終了(停止)条件

以下のどれかを実行
・ウインドウを閉じる
・<スクリプト名>を指定しない
・<間隔の秒数>に0を指定
・<間隔の秒数>を指定しない
・別の [OnTimer スクリプトをインストール] スクリプトステップを実行

互換性

製品 サポート
FileMaker Pro
FileMaker Go
FileMaker WebDirect
FileMaker Server ×
FileMaker Cloud 製品 ×
FileMaker Data API ×
カスタム Web 公開 ×

起点バージョン

10.0

解説

ウインドウごとに 1 つのタイマーをインストールします。

スクリプトの実行について

・スクリプトが実行中の場合、タイマーに関連付けられたすべてのスクリプトは、実行中のスクリプトが終了するまで実行しません。

タイマーについて

・アクティブウインドウにタイマーがインストールされ、ユーザまたはスクリプトによって新しいウインドウが開かれた場合、その新しいウインドウでタイマーが継承されます。
・ウインドウごとに同時に動作する個別のタイマーを設定することができます。
・ウインドウが背景にある場合や非表示の場合でもタイマーは動作し続けます。
・ダイアログウインドウとタイマーを使用している場合はウインドウスタイルについてを参照してください。

スクリプト引数について

・<オプションのスクリプト引数> オプションの値はタイマースクリプトの実行時に評価されます。
・タイマーのインストールよりもかなり後になる可能性があります。
・別のスクリプトの実行中はタイマースクリプトは起動されません。
  →評価時に Get (スクリプト引数) に値は設定されません。

・後で使用するためにタイマースクリプトに値を指定するには、次の方法があります。

指定する値
定数
グローバルフィールド
グローバル変数 (ローカル変数ではなく)
このスクリプトステップの <オプションのスクリプト引数> オプションの Get (スクリプト引数) 以外の関数を使用した計算式

発展内容

開いているウインドウから独立してスケジュールに従ってスクリプトを実行するには、FileMaker Server ヘルプまたはプロダクトドキュメンテーションセンターの FileMaker Cloud 製品のマニュアルを参照してください。

サンプル

・[OnTimer スクリプトをインストール] ステップを使用して、毎分1回[時計]スクリプトを実行します。

OnTimer スクリプトをインストール [「時計」 ; 間隔: 60]

・[OnTimer スクリプトをインストール] ステップで5秒ごとに実行している「予約レコード作成」スクリプトを100回実行したら終了します。

↓OnTimer起動するスクリプト

OnTimer スクリプトをインストール [「予約レコード作成」 ; 間隔: 5]

↓OnTimerで起動される「予約レコード作成」スクリプト

新規レコード/検索条件
If [ Get(レコード総数) ≧ 100 ]
    OnTimer スクリプトをインストール [ 「予約レコード作成」 ; 間隔: 0 ]
End If

関連項目

スクリプトステップリファレンス
スクリプトトリガの設定
変数の使用


以上、自分メモ的な要素が強いヘルプ解説でした。
このヘルプは自分用なので、正確な「OnTimerスクリプトをインストール」ステップの解説は、本家ヘルプを参照してください。