Hai bisogno di aiuto con un apice o plista

1

Questa è stata un'esperienza di apprendimento per me. Tutto mi viene logicamente verificato in questo script / plist ma qualcosa non è corretto. Tutto funziona, ma poi lo script viene eseguito ogni minuto che diventa fastidioso dal momento che sto aprendo alcuni programmi nella sceneggiatura. Se digiti il codice diventa frustrante quando cambia la finestra attiva.

Nota, questo è il mio primo esercizio su mele e plist, quindi sentiti libero di criticare il mio codice. L'obiettivo della sceneggiatura deve essere programmato per essere eseguito due volte al giorno (2 plists) - nel mio sito cambia il mio stato di messaggistica istantanea a disponibile, apro alcuni programmi e abilito un account di posta elettronica. Alla sera, cambia stato, disattiva la posta elettronica.

Dal momento che è in esecuzione, ho pensato che fosse semplicemente il plist, ma confrontandolo con altri modelli per eseguire un'attività che si ripete una volta al giorno e che mi controlla.

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

Quindi presumo che nella mia ignoranza io abbia qualcosa che non sta chiudendo con successo una dichiarazione if, o qualcosa è appena fatto in modo inefficace. Ecco lo 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

Credo di poter dire un valore assoluto altrimenti se theHour = 8 e theMinute = 2 allora

ma preferirei il modo in cui è ora dal momento che il mio computer potrebbe essere spento quando è programmato per funzionare, e credo che funzionerà al risveglio, o forse è stato un utile effetto laterale del ripetersi ... Posso cambia sempre il plist da eseguire all'avvio pure.

    
posta Ryan Hollingsworth 09.05.2013 - 16:23
fonte

2 risposte

0

Non sono un esperto di Applescript , ma potresti prendere in considerazione la possibilità di semplificare gli script per rimuovere gli aspetti temporali e utilizzare il demone launchd per la pianificazione . Dopotutto, ecco perché Apple l'ha inserito nel sistema operativo.

Anche se ovviamente non hai paura della modifica da riga di comando e plist, Lingon è un'applicazione che fornisce una semplice interfaccia GUI per launchd ( per il resto di noi ).

    
risposta data 09.05.2013 - 18:59
fonte
0

Sono dell'aspetto plist della tua domanda, ma questo script funzionerà e resterà aperto in background controllando l'ora ogni quattro minuti (personalizzabile) per vedere se il giorno o l'ora richiede un cambio di stato. Funziona nella tua situazione?

Sarebbe gradito qualsiasi link per spiegare il tuo uso dei plists sopra.

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
    
risposta data 16.05.2013 - 16:52
fonte

Leggi altre domande sui tag