1 votes

Applescript - Automator - raccourci clavier demain

J'ai réussi à créer un raccourci clavier à partir d'une "action rapide" dans Automator basée sur l'exécution d'un AppleScript (insertion de la date système actuelle). Cependant, je n'arrive pas à faire fonctionner un script similaire pour insérer la date de demain (date actuelle + 1 jour) ou le jour suivant (date actuelle + 2 jours).

Voici ce que j'ai :

on run {input, parameters}

    set thedate to (current date) as string
    set myNewDate to thedate + (1 * days)
    tell application "System Events"
        keystroke myNewDate
    end tell
end run

Il produit cette erreur de syntaxe :

Can’t make "Tuesday, March 5, 2019 at 10:13:55 AM" into type number.

Quelqu'un peut-il m'aider à identifier mon erreur et à la corriger ? L'assistance Apple ne peut pas aider les non-développeurs à résoudre les problèmes liés à AppleScript.

Toute aide est grandement appréciée par ce codeur novice.

Merci à Allan, ark, Wowfunhappy et aux autres pour leur aide rapide (pas seulement une correction, mais la définition de mon problème de syntaxe). J'ai une modification à apporter : comment puis-je dire à la chaîne de caractères d'omettre l'horodatage à la fin : "à 12:24:21 AM" ?

2 votes

Dès le départ... vous essayez d'ajouter un entier à quelque chose que vous avez défini comme une chaîne.

2 votes

@JustinS, Veuillez ne pas ajouter de questions supplémentaires après avoir répondu à la première. Une question par question. Créez une nouvelle question pour "comment puis-je dire à la chaîne de laisser l'horodatage à la fin : "à 12:24:21 AM" ?"

0 votes

Néanmoins, permettez-moi d'ajouter... s'il vous plaît, prenez le temps de lire attentivement la Référence de la classe pour la section date objet dans le Guide du langage AppleScript car cela vous donnera un aperçu de la façon dont vous pouvez récupérer seulement les parties de ce qui est retourné par la fonction current date commande par exemple : set thedate to date string of ((current date) + (1 * days)) as string

2voto

Artem Tikhomirov Points 4501

Vous essayez d'ajouter le jour au mauvais endroit. Essayez ceci :

set thedate to ((current date) + (days * 1)) as string
tell application "System Events"
    keystroke thedate
end tell

La "date actuelle" renvoie l'heure en secondes, il faut donc ajouter l'équivalent d'un jour en secondes (86 400 secondes dans un jour, mais je suis sûr que vous le saviez) pour obtenir demain. Changez le multiplicateur pour obtenir plus de jours dans le futur ou le passé en utilisant une valeur négative pour le multiplicateur.

Notez que tous les jours n'ont pas 86400 secondes (le changement d'heure d'été est de +/- 3600, les secondes intercalaires, etc ) donc certains jours il peut y avoir une heure de décalage.

0 votes

Je pourrais ajouter... que ce n'est pas que vous ne peut pas ajouter à la date plus tard, mais cela doit être fait avant que la date ne soit transformée en chaîne. Une fois que la date est une chaîne de caractères, vous ne pouvez pas effectuer d'opérations arithmétiques sur celle-ci. "Mon chien est pelucheux." + 1 n'est pas égal à quoi que ce soit, tout comme "Mardi 5 mars 2019 à 10:33:22 AM" + 1.

0 votes

Cela fonctionne aussi : set thedate to (current date) + (1 * days) as string

1 votes

@user3439894 : Il y a toujours plus d'une façon de faire quelque chose. Dans ce cas, utiliser une constante fournie par le système est mieux que d'utiliser un "nombre magique". J'ai mis à jour ma réponse pour refléter cela.

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