2 votes

L'application Applescript se bloque constamment

Chaque fois que j'essaie d'exécuter ce code, le texte n'est pas enregistré.

 repeat
        set myTime to (time of (current date))
        set precisetime1 to 82800
        set precisetime2 to 84600
        set precisetime3 to 85500
        set precisetime4 to 86100
        set wantTime to "0"
        if myTime  precisetime1 then
            repeat
                set myTime to (time of (current date))
                if myTime  precisetime2 then
                    repeat
                        set myTime to (time of (current date))
                        if myTime  precisetime3 then
                            repeat
                                set myTime to (time of (current date))
                                if myTime  precisetime4 then
                                    repeat
                                        set myTime to (time of (current date))
                                        if myTime  wantTime then
                                            tell application "Messages"
                                                activate
                                            end tell
                                            tell application "System Events"
                                                keystroke "Good Morning"
                                                keystroke return
                                            end tell
                                            delay (0.5)
                                            exit repeat
                                        end if
                                        delay (5)
                                    end repeat
                                end if
                                delay (300)
                            end repeat
                        end if
                        delay (900)
                    end repeat
                end if
                delay (1800)
            end repeat
        end if

        log {"checked at % seconds since midnight", myTime}
        delay (3600)
    end repeat

ce code est censé attendre jusqu'à minuit, puis envoyer un message disant "bonjour" J'ai ajouté tant d'instructions if et d'instructions repeat parce que le code était conçu pour fonctionner constamment et que vérifier toutes les 5 secondes utilisait trop de ressources.

2voto

S38 Points 371

Il s'avère que ma réponse était simple

J'ai ajouté une fonction de retardement

set myTime to (time of (current date))
set waitTime to 86400 - myTime
delay (waitTime)
tell application "Messages"
    activate
end tell
tell application "System Events"
    keystroke "Good Morning"
    keystroke return
    log {"checked at % seconds since midnight", myTime}
end tell
delay (3600)

1voto

Mineinjava Points 40

Vous pouvez utiliser ce tutoriel pour utiliser launchd :

https://www.maketecheasier.com/use-launchd-run-scripts-sur-régime-MacOS/

<key>StartCalendarInterval</key> 
<dict> 
    <key>Hour</key> 
    <integer>9</integer> 
    <key>Minute</key> 
    <integer>0</integer> 
<string>/Users/user/Scripts/restart.sh</string>
</dict>

Je suis également novice en AppleScript

J'espère que ça va marcher

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