0

これは私のオリジナルのスクリプトです。Safariの現在のURLを返します

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" to return URL of front document as string"];

スクリプトにURLを返すように要求する前に、Safariブラウザが開いているかどうかを確認したい場合はどうすればよいですか?

これが私がアップルスクリプトエディタで行う方法です。したがって、このスクリプトはSafariが実行されているかどうかをチェックします。これはアップルスクリプトエディタで機能します。

tell application "Safari"
        if it is running then

            //return url code here
        end if
    end tell

今必要なのは、「[[NSAppleScript alloc] initWithSource:」を使用して、ココアアプリからスクリプトをすぐに呼び出すことです。

私はこれを試しましたが、機能しません

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" if it is running to return URL of front document as string"];
4

3 に答える 3

4

なぜそれが機能するのでしょうか?それは悪いAppleScript文法です。

AppleScriptに頼らずにこれを行う方法はいくつかありますが、今のところはそれで十分です。\nCエスケープシーケンスを使用して改行を挿入することにより、埋め込みスクリプトに複数の行を含めることができます。

NSString *source = @"tell application \"Safari\"\nif it is running then\nreturn URL of front document as string\nend if\nend tell";

文字列定数を次々に配置することで分割することもできます。これにより、読みやすくなります。

NSString *source =
    @"tell application \"Safari\"\n"
        "if it is running then\n"
            "return URL of front document as string\n"
        "end if\n"
    "end tell";

Cコンパイラは、これらの文字列定数を1つのNSStringオブジェクトにまとめます。

于 2011-09-07T04:05:30.533 に答える
1

OPのAppleScript1ライナーコードが間違っています。この中のAppleScriptテキストは機能するはずです:

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" to if it is running then return URL of front document as string"];
于 2013-07-24T16:34:39.723 に答える
0

ダグスクリプト(+1)が指摘しているように、OPが試したNSAppleScript内のワンライナーApplescript構文が機能しなかった理由を少し明確にしたいと思います。

そして正直に言うと、私は3〜2を失った編集を提案しました

OPのNSAppleScriptコード:

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" if it is running to return URL of front document as string"];

構文が間違っているため、機能しませんでした。 

正しい構文は次のとおりです。

NSAppleScript *scriptURL= [[NSAppleScript alloc] initWithSource:@"tell application \"Safari\" to if it is running then return URL of front document as string"];

以下の太字で示されているコードの一部には、2つの変更があります。

「Safari」実行している場合は、URL返します

于 2013-07-24T17:59:19.077 に答える