Cela a été une expérience d'apprentissage pour moi. Tout se passe logiquement pour moi dans ce script / plist mais quelque chose ne va pas. Tout fonctionne, mais ensuite le script s'exécute toutes les minutes, ce qui devient agaçant puisque j'ouvre quelques programmes dans le script. Si vous tapez du code, cela devient frustrant car cela change la fenêtre active.
Notez que ceci est mon premier exercice de calligraphie et de pliste, n'hésitez donc pas à critiquer mon code. L’objectif du script est d’être programmé pour une exécution deux fois par jour (2 plists) - dans le but de changer le statut de ma messagerie instantanée en disponible, d’ouvrir certains programmes et d’autoriser un compte de messagerie. Dans la soirée, changez le statut, désactivez le courrier électronique.
Puisqu'il est en marche, je me suis dit que c'était simplement le plist, mais en le comparant à d'autres modèles pour accomplir une tâche qui se répète une fois par jour, le résultat est vérifié.
<plist version="1.0">
<dict>
<key>Label</key>
<string>RMWEBENABLE</string>
<key>ProgramArguments</key>
<array>
<string>/disablemail.app/Contents/MacOS/applet</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>2</integer>
</dict>
</dict>
</plist>
Donc, je suppose dans mon ignorance que quelque chose ne ferme pas avec succès une déclaration if ou que quelque chose est simplement fait de manière inefficace. Voici le script.
set offTime to 17
set onTime to 9
set dayOfWeek to weekday of (current date)
set theHour to get the (hours of (current date))
if theHour ≥ offTime or dayOfWeek = Saturday or dayOfWeek = Sunday then
#LEAVE ME ALONE!!!!
tell application "Mail"
set enabled of account "mailbox" to false
end tell
tell application "Messages"
set status to invisible
end tell
tell application "Microsoft Lync"
quit
end tell
else if theHour ≥ onTime then
#I'm available for contact
tell application "Mail"
set enabled of account "mailbox" to true
end tell
tell application "Messages"
set status to available
end tell
tell application "Microsoft Lync"
activate
end tell
tell application "Firefox"
activate
end tell
tell application "Coda 2"
activate
end tell
tell application "Google Chrome"
activate
end tell
end if
Je suppose que je pourrais faire une valeur absolue dire sinon si theHour = 8 et theMinute = 2 alors
mais je préférerais la situation actuelle car mon ordinateur est peut-être éteint quand il est programmé pour fonctionner, et je crois que cela fonctionnera au réveil, ou peut-être que c'était un effet secondaire utile de la répétition ... Je peux toujours changer le plist à exécuter au démarrage aussi bien.
Je suis avec l'aspect plist de votre question, mais ce script fonctionnera et restera ouvert en arrière-plan vérifiant l'heure toutes les quatre minutes (personnalisable) pour voir si le jour ou l'heure nécessite un changement de statut. Est-ce que ça marche dans votre situation?
Tout lien expliquant votre utilisation des listes ci-dessus serait apprécié.
la source