1 votos

Necesita Ayuda con un Applescript / plist

Esta ha sido una experiencia de aprendizaje para mí. Todo sale bien, lógicamente, a mí en esta secuencia de comandos/ plist pero algo no está correcto. Todo funciona, pero, a continuación, la secuencia de comandos se ejecuta cada minuto que se está volviendo molesto ya que me voy a abrir un par de programas en la secuencia de comandos. Si al escribir código es frustrante como cambia la ventana activa.

Nota, este es mi primer applescript y plist ejercicio, así que siéntase libre para criticar mi código. El objetivo de la secuencia de comandos es programarse para que se ejecute dos veces al día (2 plists) - en la mañana cambio mi estado IM disponibles, abrir algunos programas y activar una cuenta de correo electrónico. En la noche, cambio de estado, deshabilitar el correo electrónico.

Dado que se trata de volver a correr yo pensé que era simplemente el plist, pero en comparación con otras plantillas para realizar una tarea que se repite una vez al día que se comprueba a mí.

<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>

Así que estoy asumiendo que en mi ignorace tengo algo que no se haya podido cerrar una instrucción if o somethign se acaba de hacer ineffeciently. Aquí está la secuencia de comandos.

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

Supongo que podría hacer un valor absoluto decir si por el contrario, theHour = 8 y theMinute = 2 entonces

pero prefiero la forma en que está ahora, ya que Mi equipo puede estar apagado cuando este está programado para ejecutarse, y yo creo que esto se ejecute en wake, o tal vez fue un útil efecto secundario de la repetición... siempre puedo cambiar el plist para ejecutar en el arranque así.

0voto

Chris Lieb Puntos 106

Yo no soy un Applescript experto, pero usted podría considerar la simplificación de las secuencias de comandos para eliminar los aspectos temporales y usar el daemon launchd para la programación. Después de todo, es por eso que Apple puso en el OS.

A pesar de que está, obviamente, no tiene miedo de la línea de comandos y plist edición, Lingon es una aplicación que proporciona una interfaz gráfica de usuario sencilla interfaz para launchd (para el resto de nosotros).

0voto

Paul Skinner Puntos 21

Estoy con el plist aspecto de su pregunta, pero esta secuencia de comandos se ejecutará y permanecer abierta en el fondo de la comprobación de la hora cada cuatro minutos ( cómoda )para ver si el día o el tiempo que requiere un cambio de estado. Hace que el trabajo en su situación?

Todos los enlaces a explicar el uso de plists anterior sería apreciada.

property idleTImer : 10 --seconds
property toggleAvailable : false
on run
    set toggleAvailable to false
    say "launching change status script."

end run

on idle
    say "checking status."
    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
        if toggleAvailable then
            say "LEAVE ME ALONE!!!!" --or whatever you want to do here
            set toggleAvailable to false
        else
            say "Status is already NOT available. Do nothing."
        end if
    else
        if theHour ≥ onTime then
            if not toggleAvailable then
                say "I'm available for contact" --or whatever you want to do here
                set toggleAvailable to true
            else
                say "Status is already available. Do nothing."
            end if
        end if
    end if
    return idleTImer --idle time is set to whatever positive value the idle handler returns.
end idle

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X