ScanSnapをAppleScriptでGUIスクリプティングをする場合は、Automatorを使う。

Mavericks以降、AppleScriptでGUIを操作するGUIスクリプティングの制限が厳しくなりました。
アクセシビリティの許可を各アプリごとに得なければならなくなり、今まで使えていた自動化の仕組みを全て調整し直さなくてはなりませんでした。

ぼくは、ScanSnapの操作をGUIスクリプティングで書いていました。
出来ればAppleScriptのアプリの状態で動かしたかったのですが、AppleScriptのアプリだと毎回実行ファイル自体が書き換えられているような動作をするので、同じアプリだと認識されずアクセシビリティの許可を毎回得なければならない状態で詰まっていました。

これを回避すべく、Automatorでスクリプトを実行してみると最初だけ許可を得る必要がありましたが、スムーズに実行できるようになりました。

IMG 6378

自分の力量でこなせる自動化は全て自動化しておきたくて、とりあえず楽にできないかいつも考えています。
ScanSnapは、これが出来ないとかなり不便な状態でしたが、操作をできる状態に戻せてよかったです。

ぼくのScanSnapは、S1500なのでScanSnap SDKを使うことが出来ません。
しかし、GUIスクリプティングなら設定をボタン一つで変更したり、読み込みの継続や中止を別のMacから操作したりと割りと簡単にできます。

(ほしいな、iX500)

AppleScript

今使っているAppleScriptのは、次のようなものでScanSnap Managerを直接操作します。

ScanSnapGUIのchangeSet(settingName)で、設定をポップアップルメニューから選んだり、continueScan()で継続読み取りしたりという動作を制御できます。

set GUI to new() of ScanSnapGUI
changeSet("設定の名前") of GUI --設定を変更
continueScan() of GUI --継続読み取り

ここからが、スクリプトの本体です。
自由にお使いください。

script ScanSnapGUI
    on new()
        script _ScanSnapGUI
        on closeWindow()
            tell application "ScanSnap Manager"
                activate
            end tell

            tell application "System Events"
                tell application process "ScanSnap Manager"
                    tell window 1
                        tell group 2
                            click UI element 1
                        end tell
                    end tell
                end tell
            end tell
        end closeWindow

        on changeSet(settingName)
            tell application "ScanSnap Manager"
                activate
            end tell

            tell application "System Events"
                tell application process "ScanSnap Manager"
                    click menu item 3 of item 2 of menu of menu bar 1
                    --ScanSnap Manager>設定…をクリック
                    tell window 1
                        --設定画面
                        tell group 2
                            --上部のグループ
                            tell pop up button 1
                                --読み取り設定ボタン
                                click
                                tell menu 1
                                    --ポップアップメニュー
                                    try
                                        click menu item settingName
                                        --読み取り設定を選択
                                    end try
                                end tell
                            end tell
                        end tell
                    end tell
                    click button 1 of window 1
                    --適用ボタン
                end tell
            end tell
            closeWindow()
        end changeSet

        on continueScan()
            tell application "ScanSnap Manager"
                activate
            end tell

            tell application "System Events"
                tell application process "ScanSnap Manager"
                    click button "継続読み取り" of window "ScanSnap Manager - メッセージ" of application process "ScanSnap Manager" of application "System Events"
                end tell
            end tell
        end continueScan

        on abortScan()
            tell application "ScanSnap Manager"
                activate
            end tell

            tell application "System Events"
                tell application process "ScanSnap Manager"
                    click button "読み取り中止" of window "ScanSnap Manager - メッセージ" of application process "ScanSnap Manager" of application "System Events"
                end tell
            end tell
        end abortScan
        on completeScan()
                tell application "ScanSnap Manager.app"
                    activate
                end tell

                tell application "System Events"
                    tell application process "ScanSnap Manager"
                        try
                            click button "読み取り終了" of window "ScanSnap Manager - イメージ読み取りとファイル保存" of application process "ScanSnap Manager" of application "System Events"
                        end try
                    end tell
                end tell
            end completeScan
        end script
    end new
end script

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です