AppleScript を使用して、条件に基づいてアプリケーションを最前面に表示する方法 (OS X)

AppleScript を使用して、条件に基づいてアプリケーションを最前面に表示する方法 (OS X)

私は、Web ページで発生するイベントに基づいて、Web ブラウザーを前面に表示 (フォーカスを設定、画面に表示) する操作を自動化する方法を探しています。Web ページを完全に制御できるため、これをトリガーするために必要な操作は何でも実行できます。

いくつかのビデオカメラを監視する Web ページをバックグラウンドで開き、複数のアプリを開いている必要があります。ビデオカメラが動いた場合、使用中のアプリの代わりに Web ブラウザー ウィンドウが表示されるように、Web ブラウザー ウィンドウを前面に表示する必要があります。

私はこの男がやろうとしていたことと似たようなことを考えていました:Mac OS X Lion で 15 分ごとにアプリケーションを最前面に表示するにはどうすればよいですか?

AppleScript を使用して連続ループを実行し、1 秒ごとに Safari で開いているページをチェックして変更をスキャンし、Safari に「アクティブ化」コマンドを送信してページを前面に表示することを考えています。この方法で実行すればよいのでしょうか、それとももっと良い方法があるのでしょうか。

答え1

スクリプトをバックグラウンド プロセスとして実行するのではなく、launchd または cron を使用するだけでしょう。

  1. AppleScript エディタのどこかに次のようなスクリプトを保存します。

    try
        tell application "Safari"
            tell document 1 where name starts with "Webcam" to do JavaScript "--"
            if result is "--" then activate
        end tell
    end
    
  2. 次のようなプロパティリストを保存します~/Library/LaunchAgents/com.superuser.443513.plist

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.superuser.443513</string>
        <key>ProgramArguments</key>
        <array>
            <string>osascript</string>
            <string>/Users/username/Library/Scripts/script.scpt</string>
        </array>
        <key>StartInterval</key>
        <integer>5</integer> <!-- every 5 seconds -->
    </dict>
    </plist>
    
  3. launchctl load ~/Library/LaunchAgents/com.superuser.443513.plist


条件を確認するには curl を使用するだけでよいでしょうか? crontab を編集してEDITOR=nano crontab -e次のような行を追加することで、1 分ごとに実行できます。

*/2 * * * * [[ -n "$(curl -L http://superuser.com/questions/443513 | grep automate)" ]] && open http://example.com

関連情報