7 votes

Applescript : "can't get tab group 1 of window" (El Capitan)

Voici un applescript que j'utilise pour modifier 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 fonctionnait sur Yosemite, mais lorsque j'ai mis à jour vers 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 sur la raison de ce phénomène sera très appréciée.

10voto

Arthur Points 1521

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

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

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

Le script :

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X