1

Filemaker 内から呼び出された Applescript スクリプトから奇妙な結果が得られます。これは、これまで見たこともなければ、ここや他の場所でオンラインで参照されたこともありません。

次のスクリプトは、3 つの新しいレコードを作成し、Filemaker スクリプト「paste_into_container」を呼び出します。FM スクリプト「paste_into_container」は非常に単純で、クリップボードにあるものを特定のオブジェクト フィールドに貼り付けます。スクリプトが Filemaker 内から呼び出されると、「paste_into」container サブスクリプトは、クリップボードの内容を最後の新しいオブジェクトにのみ貼り付けます。記録。最初の 2 つのレコードのオブジェクト フィールドは空白のままです。

まるでループが新しいレコードを作成し、「paste_into_container」スクリプトを無視して、ループの次の繰り返しに移るかのようです。

スクリプトは、ScriptEditor から呼び出された場合は正常に動作しますが、Filemaker 内から呼び出された場合は失敗します。スクリプトは、繰り返しループを削除してレコードを 1 つだけ作成しても機能します。

各ループの最後に追加される遅延を増やしてみましたが、1 秒でも 5 秒でも違いはありません。

それは単純なことだと確信していますが、私はそれを見ていません.2日後には(何らかの種類の)助けが必要です.

追加情報: FM11 サーバーを介して動作する Mac OS 10.6.8 FM 11

前もって感謝します

フィル

tell application "FileMaker Pro"
 show every record in table "Image_Info" in database myDB
    repeat with i from 1 to 3
            go to layout 1 of database myDB
            set myNewRecord to create new record in database myDB
            go to last record
            do script "paste_into_container" 
            delay 1
    end repeat  
end tell
4

1 に答える 1

0

特にこの問題については、別のフォーラムで非常に良い議論があります。FMがFM10からFM11に移行したとき、プログラムが埋め込まれたAppleScriptからの要求を処理する方法を変更しました。基本的に、FM11 Filemakerは、Applescriptがdo scriptコマンドを使用して内部Filemakerスクリプトを呼び出すたびに、同期ではなく非同期でApplescriptコマンドを処理するためです。これが意味するのは、Filemakerは、内部FMスクリプトが完了したというFilemakerからのフィードバックを待たずに、Applescriptを続行できるようにするということです。回避策はありますが、それはほとんどエレガントではなく、普遍的ではないようです。以下のリンクを参照してください。

私が理解しているように、これは他のローカルFilemakerスクリプトを呼び出す埋め込みApplescriptにのみ影響します。

リンク

于 2012-10-25T18:58:01.797 に答える