3 votes

Comment puis-je utiliser AppleScript ou Automator pour activer ou désactiver Time Announce à des moments précis ?

J'aime Time Announce pendant la journée quand je travaille. Mais je veux qu'elle soit désactivée quand je dors.

La fonction Ne pas déranger d'Apple coupe les notifications et les sons qui leur sont associés, mais elle n'a aucun effet sur Time Announce.

Ailleurs sur ce site, il y a une ancienne réponse datant d'un certain nombre d'années qui proposait ce script :

do shell script "defaults write ./com.apple.speech.synthesis.general.prefs TimeAnnouncementPrefs -dict TimeAnnouncementsEnabled -bool YES"

Similaire script pour le désactiver.

Une autre réponse peut être trouvée ici, mais elle remonte à l'époque de Mountain Lion :

Comment activer "Annoncer l'heure" de manière programmatique ?

Je suis nouveau ici et je suis un débutant en matière d'Aapplescript. Je n'ai pas encore le privilège de commenter pour demander des éclaircissements aux auteurs des réponses présentées.

Ces scripts ne fonctionnent pas sur Mac OS X High Sierra (10.13). Alors que le premier scripts compile, lorsqu'il est exécuté, rien ne se passe. Le scripts de la page référencée ne compile même pas. Erreur de syntaxe sur un jeton inconnu après un identifiant.

En outre, la modification manuelle de cette préférence dans les paramètres nécessite le déverrouillage de mon mot de passe. AppleScript ou Automator peuvent-ils aussi s'en charger ?

0 votes

Cela devrait fonctionner, essayez de changer "./" dans le script en "~/Bibliothèque/Préférences/" et faites un essai.

0 votes

Nope. Le résultat est "". Je l'ai essayé après avoir validé pour débloquer la préférence. AppleScript peut-il contourner les routines de validation qui exigent mon code d'accès pour déverrouiller chaque préférence, à chaque fois.

1voto

wch1zpink Points 6067

MISE À JOUR : Cela fonctionne pour moi avec la dernière version de High Sierra.

Cette version activera l'option "Annoncer l'heure :" si elle n'est pas déjà activée.

property thePassword : "yourpassword"

tell application "System Preferences"
    reveal anchor "ClockPref" of pane id "com.apple.preference.datetime"
    tell application "System Events"
        delay 0.5
        my enterPassword()
        set theValue to get value of checkbox "Announce the time:" of tab group 1 of window "Date & Time" of application process "System Preferences"
        if theValue is 0 then
            click checkbox "Announce the time:" of tab group 1 of window "Date & Time" of application process "System Preferences"
        end if
    end tell
    delay 1
    quit
end tell

on enterPassword()
    tell application "System Events"
        try
            click button "Click the lock to make changes." of window "Date & Time" of application process "System Preferences"
        end try
        delay 1
        --activate
        set value of text field "Enter password" of sheet 1 of window "Date & Time" of application process "System Preferences" to thePassword
        delay 1
        click UI element "Unlock" of sheet 1 of window "Date & Time" of application process "System Preferences"
    end tell
end enterPassword

Cette version désactivera l'option " Annoncer l'heure : " si elle est déjà activée.

property thePassword : "yourpassword"

tell application "System Preferences"
    reveal anchor "ClockPref" of pane id "com.apple.preference.datetime"
    tell application "System Events"
        delay 0.5
        my enterPassword()
        set theValue to get value of checkbox "Announce the time:" of tab group 1 of window "Date & Time" of application process "System Preferences"
        if theValue is 1 then
            click checkbox "Announce the time:" of tab group 1 of window "Date & Time" of application process "System Preferences"
        end if
    end tell
    delay 1
    quit
end tell

on enterPassword()
    tell application "System Events"
        try
            click button "Click the lock to make changes." of window "Date & Time" of application process "System Preferences"
        end try
        delay 1
        --activate
        set value of text field "Enter password" of sheet 1 of window "Date & Time" of application process "System Preferences" to thePassword
        delay 1
        click UI element "Unlock" of sheet 1 of window "Date & Time" of application process "System Preferences"
    end tell
end enterPassword

enter image description here


J'aurais pu configurer le script pour qu'il exécute l'action de cliquer sur la case à cocher "Annoncer l'heure :" si elle n'était pas déjà activée avec des déclarations conditionnelles d'activation ou de désactivation de cette case à cocher à certaines heures. Je me suis dit que, pour l'instant, il serait juste plus facile d'enregistrer deux versions différentes du script. Une version pour activer la case à cocher "Annoncer l'heure :" et une version pour désactiver la case à cocher "Annoncer l'heure :". Dans ScriptEditor, il suffit d'enregistrer chaque version du script comme applications. De là, il suffit d'ouvrir Calendar.app et de créer deux nouveaux événements de calendrier. Un événement pour activer la case à cocher "Annoncer l'heure :" à l'heure de votre choix. Et un autre pour la désactiver Une fois que vous avez créé l'événement, il suffit de créer une alerte personnalisée et de sélectionner l'option d'ouverture de fichier puis de choisir votre script que vous avez sauvegardé comme une application.

enter image description here

0 votes

Désolé de dire que le script échoue. Il y a une erreur script qui dit "System Events got an error. Can't set Application Process 'SecurityAgent' to 'myactualpassword' " En même temps, l'icône des préférences système rebondit dans le dock pour me dire que les préférences système essaient de déverrouiller les préférences de date et d'heure et me demandent d'autoriser manuellement cela en entrant mon mot de passe. Donc, en fait, il veut que mon mot de passe soit entré manuellement dans les Préférences Système afin de permettre au script d'entrer mon mot de passe dans les préférences Date et Heure.

0 votes

Mais je pense que votre script est très proche, il faut juste résoudre le fait qu'Apple veut que le mot de passe soit entré deux fois à deux endroits. Aussi, bien sûr, j'ai été invité à donner à script Editor la capacité de contrôler mon ordinateur sous la préférence Accessibilité de la vie privée.

0 votes

J'ai mis à jour le code dans la réponse. Il fonctionne maintenant uniquement avec High Sierra

0voto

Réparation facile via le terminal, si c'est cool.

Si vous rencontrez toujours ce problème, c'est ennuyeux, mais voici un moyen simple à partir de Big Sur, dans le terminal :

Activez "Annoncer l'heure".

plutil -replace TimeAnnouncementPrefs.TimeAnnouncementsEnabled -bool YES /Users/macbook/Library/Preferences/com.apple.speech.synthesis.general.prefs.plist; defaults read com.apple.speech.synthesis.general.prefs.plist;

Désactivez la fonction "Annoncer l'heure".

plutil -replace TimeAnnouncementPrefs.TimeAnnouncementsEnabled -bool NO ~/Library/Preferences/com.apple.speech.synthesis.general.prefs.plist; defaults read com.apple.speech.synthesis.general.prefs.plist;

Programmation

Restez simple. Utilisez crontab .

#m      h       dom     mon     dow     command
5       23      *       *       *       plutil -repla...
5       7       *       *       *       plutil -repla...

Il est évident qu'il faut utiliser la ligne complète (sur une seule ligne) plutôt que les ellipses... Si vous n'êtes pas familier avec la crontab, vous pouvez tricher et utiliser juste ce site (ou bien d'autres) pour générer la ligne complète pour vous.

Explication

La première ligne est une commande d'édition utilisant plutil dans le terminal pour modifier les préférences dans com.apple.speech.synthesis.general.prefs.plist .

Vous pouvez utiliser plutil pour afficher les préférences dans le terminal comme suit :

plutil -p ~/Library/Preferences/com.apple.speech.synthesis.general.prefs.plist

...qui à Big Sur, montre...

{
  "TimeAnnouncementPrefs" => {
    "TimeAnnouncementsEnabled" => 0
    "TimeAnnouncementsIntervalIdentifier" => "EveryHourInterval"
    "TimeAnnouncementsPhraseIdentifier" => "ShortTime"
    "TimeAnnouncementsVoiceSettings" => {
      "CustomVolume" => 0.1148504
    }
  }
}

Le site TimeAnnouncementPrefs.TimeAnnouncementsEnabled est l'interrupteur BOOL que nous activons et désactivons avec la fonction -bool YES ou -bool NO . Je suis sûr que les autres réglages font quelque chose, mais honnêtement, pas assez de temps dans la journée. Je suis simple... interrupteur marche/arrêt.

La deuxième ligne force le Mac à recharger ce préfixe, de sorte que vous n'avez pas besoin de tuer une application ou de redémarrer. Si vous n'exécutez pas la deuxième commande, le changement ne prendra effet qu'après un redémarrage ou un arrêt forcé. (Pour les utilisateurs du CLI, c'est l'équivalent Mac de source ~/.bash_profile quand on change de PATH, d'alias ou autre.

Notez que si vous avez les préférences système -> Dock et barre de menu -> Horloge ouvertes dans les préférences lorsque vous faites cela, l'interface utilisateur ne sera PAS rechargée pour refléter les changements. Fermez complètement les Préférences Système (au lieu d'utiliser la flèche vers l'arrière) et rouvrez-les (sans enregistrer), et vous verrez le changement reflété. Si vous ne le faites pas, les préférences sont toujours modifiées, mais vous courez le risque d'enregistrer par-dessus.

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