Experten!
Ich bin neu bei Apple Script und kämpfe mit seiner Komplexität ... Aber vielleicht kann jemand helfen. Was ich mit meinem iMac machen möchte:
Der iMac wird verwendet, um als HighEnd-Diashow für eine Künstlerarbeit zu arbeiten. Es ist äußerst wichtig, dass der iMac die richtige Zeit für die Anzeige der Diashow erhält.
Was der iMac also tun muss:
iMac wacht jeden Morgen um 8 Uhr auf und geht um 23 Uhr schlafen (erledigt von Energysaver)
iMac schaltet WLAN ein und aus (siehe Skript 1 unten)
Irgendwelche Hilfen u. Vorschläge würden sehr geschätzt!! Andreas
Was ich habe:
--SKRIPT 1
set status to do shell script "networksetup -getairportpower en1"
if status ends with "On" then
do shell script "networksetup -setairportpower en1 off; sleep 2"
end if
set status to do shell script "networksetup -getairportpower en1"
if status ends with "Off" then
do shell script "networksetup -setairportpower en1 on"
end if
--SKRIPT 2
tell application "Safari" activate
end tell
--SCRIPT 3 Klicken Sie auf das Kästchen, um die Nutzungsbedingungen zu akzeptieren
to clickID(theId)
tell application "Safari"
do JavaScript "document.getElementById('" & theId & "').click();" in document 1
end tell
end clickID
--SCRIPT 4 wird benötigt, um die Zeit abzurufen, zu warten und den Bildschirmschoner zu starten
set ntpdPID to do shell script "pgrep ntpd; exit 0"
if ntpdPID is not "" then
do shell script "systemsetup -setusingnetworktime On" with administrator privileges
end if
try
tell application id "com.apple.Screensaver.engine" to launch
end try
repeat 2 times
set status to do shell script "networksetup -getairportpower en0"
if status ends with "On" then
do shell script "networksetup -setairportpower en1 off"
delay 2
else
do shell script "networksetup -setairportpower en1 on"
end if
end repeat
tell application "Safari" to activate
Verwenden Sie den @CJK-Code, um eine Verbindung herzustellen. Verwenden Sie dann Skript 3, um die Nutzungsbedingungen zu akzeptieren.
Safari > Einstellungen > Erweitert > Entwicklungsmenü in der Menüleiste anzeigen
Entwickeln > JavaScript von Apple Events zulassen
3.
tell application "Safari"
activate
make new document with properties {URL: "http://captive.apple.com"}
if not (exists document 1) then reopen
tell current tab of window 1 to set URL to "https://stackoverflow.com/questions/24500011/how-to-wait-for-webpage-to-fully-load-before-proceeding-script"
set the_state to missing value
repeat until the_state is "complete"
set the_state to (do JavaScript "document.readyState" in document 1)
delay 0.2
end repeat
set theId to "WillBeAddedOnceCodeIsAddedInQuestion"
do JavaScript "document.getElementById('" & theId & "').click();" in document 1
end tell
Wenn das Skript funktioniert, gehen Sie wie folgt vor:
Cron-Methode (veraltet)
1.
export VISUAL=nano; crontab -e
2. Kopieren Sie Folgendes und fügen Sie es ein
0 9 * * * osascript /path/to/YourAppleScript.scpt
3. Drücken Sie ^O (Strg + O)
Hinweis: Cron wird nicht ausgeführt, wenn der Computer im Ruhezustand ist
launchd
sudo nano /Library/LaunchDaemons/com.mycompany.plist
Folgendes kopieren und einfügen:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.mycompany.daemon</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>/path/to/YourAppleScript.scpt</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
Drücken Sie ^O (Strg + O)
Drücken Sie Enter
5.
sudo launchctl load -w /Library/LaunchDaemons/com.mycompany.plist
launchd
ist es wahrscheinlich besser als cron
, wobei letzteres unter macOS als veraltet gilt. StartCalendarInterval
wäre wahrscheinlich der Schlüssel, um hier zu verwenden.space
wenn >
Sie sie verwenden, z. B. Safari> Einstellungen> Erweitert> Entwicklungsmenü in der Menüleiste anzeigen usw.open location
ist kein Safari- Befehl und sollte nicht innerhalb eines Safari- Blocks verwendet werden tell
(bzw. ist dafür überflüssig). öffnet eine URL im Standardbrowseropen location
des Systems , z. B. Chrome . Um eine URL in Safari zu öffnen , tun Sie .
tell app "Safari" to make new document with properties {URL: "http://example.com"}
JBis
Allan
Andreas
JBis
Andreas