Applescript: “ne peut pas obtenir le groupe d'onglets 1 de la fenêtre” (El Capitan)

5

Ce qui suit est un script que j'utilise pour changer les périphériques de sortie audio:

tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.sound"
end tell


tell application "System Events"
    tell application process "System Preferences"
        tell tab group 1 of window "Sound"
            click radio button "Output"
            if (selected of row 2 of table 1 of scroll area 1) then
                set selected of row 1 of table 1 of scroll area 1 to true
                set deviceselected to "Headphones"
            else
                set selected of row 2 of table 1 of scroll area 1 to true
                set deviceselected to "MX279"
            end if
        end tell
    end tell
end tell
tell application "System Preferences" to quit

Cela a fonctionné sur Yosemite, mais quand j'ai mis à jour El Capitan, il me donne l'erreur suivante:

"System Events got an error: Can't get tab group 1 of window \"Sound\" of application process \"System Preferences\". Invalid index"

Je ne suis pas très familier avec AppleScript, donc toute idée de ce qui pourrait se produire sera très appréciée.

Gdavtor
la source

Réponses:

8

Dans la première partie de votre script, vous chargez le Soundvolet des préférences. Il se peut que le volet ne soit pas complètement chargé avant de lui envoyer des commandes dans la deuxième partie du script. L'erreur indique que le tab group 1(celui qui contient l' Outputonglet) n'existe pas au moment où vous essayez d'y accéder.

Pour nous assurer que le tab group 1fichier existe, nous pouvons l’attendre avec ces deux lignes:

repeat until exists tab group 1 of window "Sound"
end repeat

Le script complet:

tell application "System Preferences"
    activate
    set current pane to pane "com.apple.preference.sound"
end tell


tell application "System Events"
    tell application process "System Preferences"
        repeat until exists tab group 1 of window "Sound"
        end repeat
        tell tab group 1 of window "Sound"
            click radio button "Output"
            if (selected of row 2 of table 1 of scroll area 1) then
                set selected of row 1 of table 1 of scroll area 1 to true
                set deviceselected to "Headphones"
            else
                set selected of row 2 of table 1 of scroll area 1 to true
                set deviceselected to "MX278"
            end if
        end tell
    end tell
end tell
tell application "System Preferences" to quit
Arthur
la source
Cela a du sens, merci! Savez-vous pourquoi cela fonctionnait depuis environ 9 mois et que tout commençait à peine à passer à l'acte? Décalage du système depuis El Capitan, peut-être?
Gdavtor
Bonne question. Pour être honnête, je ne sais pas.
Arthur
Pourriez-vous contribuer à cette question? apple.stackexchange.com/questions/217148/…
bmike
Si vous utilisez "window 1" au lieu de "window 'sound' pour faire référence à la fenêtre, les mots
clés seront également affichés