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.

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.