1 votes

Règles des instructions conditionnelles AppleScript

J'ai besoin qu'un script soit exécuté entre 21 heures et 6 heures du matin et j'ai du mal à comprendre pourquoi cela ne fonctionne pas. J'ai essayé avec et sans parenthèses.

J'ai supprimé "as string" à partir des suggestions faites ici, mais j'ai obtenu une erreur lorsque j'ai essayé d'exécuter l'application.

J'ai compris que l'erreur provenait d'une autre ligne du code que je n'avais pas incluse dans l'exemple.

set myTimeB to (round ((time of date ((current date) as string)) / 60) rounding down) mod 5 = 0 --every 5 minutes

Une idée de la raison pour laquelle il faut utiliser "as string" pour que cela fonctionne ?

set myTime to time of (current date) --as string

if (myTime > 21600) and (myTime < 75600) then
    display notification "it's between 6am and 9pm"
else
    display notification "it's between 9pm and 6am"
end if

1voto

user3439894 Points 52496

Mise à jour pour tenir compte de la modification totale de la portée de la question initiale :

Le problème, tel que je le vois, est que of date y as string en ((time of date ((current date) as string)) / 60) n'y ont pas leur place. Il devrait simplement être :

set myTimeB to (round ((time of (current date)) / 60) rounding down) mod 5 = 0 --every 5 minutes`
  • (time of (current date) renvoie un entier Il est donc prêt à être divisé par 60 . Il n'est pas nécessaire de la contraindre à une chaîne de caractères .
  • of date n'a aucun sens dans l'équation.

Réponse originale :

La méthode suivante fonctionne pour moi :

set myTime to time of (current date)

if (myTime > 21600) and (myTime < 75600) then
    display notification "it's between 6am and 9pm"
else
    display notification "it's between 9pm and 6am"
end if

Notez qu'à l'origine, myTime était un chaîne de caractères et vous l'avez comparée à une entier . Aujourd'hui, il est comparé aux mêmes classe .

Si vous exécutez la commande suivante dans script Éditeur :

return class of time of (current date) & class of 21600

Il revient : {integer, integer}

Alors que le résultat de :

set myTime to time of (current date) as string
return (class of myTime) & class of 21600

Il revient : {text, integer}

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