Интерфейс AppleScript Hammerspoon не запускает корректный скрипт - PullRequest
0 голосов
/ 04 июня 2019

У меня есть следующая функция обратного вызова в файле конфигурации Hammerspoon:

function usbDeviceCallback(data)
    if (data["productName"] == "Polycom CX300") then
        if (data["eventType"] == "added") then
        log = hs.osascript.applescriptFromFile("skype4b.applescript")
        print("OSASCRIPT log: "..log)
        elseif (data["eventType"] == "removed") then
            apps = hs.application.applicationsForBundleID("com.microsoft.SkypeForBusiness")
            for i, app in ipairs(apps) do
                app:kill()
            end
        end
    end
end

Вызов следующего яблочного сценария:

tell application "Skype for Business" to activate
tell application "System Events"
    tell process "Skype for Business"
        keystroke 53
        click menu item "Preferences…" of menu "Skype for Business" of menu bar 1
        tell application "Skype for Business" to activate
        click button "Audio/Video" of toolbar 1 of window 1
        tell window "Audio/Video"
            click pop up button 1 of group 1
            click menu item "Polycom CX300" of menu of pop up button 1 of group 1
            click pop up button 2 of group 1
            click menu item "Polycom CX300" of menu of pop up button 2 of group 1
            click pop up button 3 of group 1
            click menu item "Polycom CX300" of menu of pop up button 3 of group 1
            click button 1
            keystroke "h" using command down
        end tell
    end tell
end tell

Это должно запускать Skype для бизнеса и переключать его настройки звуковой карты каждый раз, когда я подключаю внешнее устройство IP-телефона. Но, насколько я понимаю, запускается только первый из appleScriptcript, а остальное игнорируется в тишине (хотя я получаю «false» в качестве вывода команды osascript). Яблочный скрипт отлично работает, запустив его из редактора скриптов или где-то еще. Я также пытался вставить задержки в разных частях скрипта, но безрезультатно.

С другой стороны, это работает:

function usbDeviceCallback(data)
    if (data["productName"] == "Polycom CX300") then
        if (data["eventType"] == "added") then
        log = os.execute("osascript skype4b.applescript")
        print("OSASCRIPT log: "..log)
        elseif (data["eventType"] == "removed") then
            apps = hs.application.applicationsForBundleID("com.microsoft.SkypeForBusiness")
            for i, app in ipairs(apps) do
                app:kill()
            end
        end
    end
end

Интересно, сталкивается ли сценарий с проблемами разрешения, но у меня нет достаточной информации о том, как Hammerspoon использует osa-скрипты, чтобы сделать обоснованное предположение об этом.

Есть идеи, можно ли это исправить? 1014 *

...