myscript.js という AppleScript スクリプトを作成して oascript に渡すと、run 関数が 1 回実行され、"hello world" が標準データ出力に書き込まれます。
function run(args) {
for (var i=0;i<10;i++) {
// out("number " + i); // execution error: Error on line 18: ReferenceError: Can't find variable: out (-2700)
}
return "hello world"; // written to standard data out
}
しかし、for ループなどで標準データに複数回書き込みたい場合は、どうすればよいでしょうか。
次のようにすると、標準エラー出力に複数回書き込み、外部アプリケーションで複数のイベントをディスパッチします。
for (var i=0;i<10;i++) {
console.log("number " + i);
}
唯一の問題は、標準のデータ イベントではなく、エラー イベントを作成していることです。
Script Editor では、標準データ出力が結果ウィンドウに送信されます。結果ウィンドウに複数回印刷したい。
更新:
できない可能性があるようです。ここでこの引用を見つけました:
Q: 私のスクリプトは長時間にわたって出力を生成します。入ってくる結果をどのように読み取るのですか?
A: 繰り返しますが、簡単に言えば、そうではありません。do shell script は、コマンドが完了するまで戻りません。Unix 用語では、パイプの作成には使用できません。ただし、できることは、コマンドをバックグラウンドに置き (次の質問を参照)、その出力をファイルに送信し、ファイルがいっぱいになったときにファイルを読み取ることです。
また、補足として、AppleScript の代わりに JavaScript を使用したい場合は、 osascriptの代わりにcocoascriptを使用する必要がありますか?