2 votes

Comment puis-je sauvegarder une variable entre deux exécutions d'Applescript ?

J'essaie d'enregistrer trois variables distinctes auxquelles mon application Applescript pourra accéder au lancement, et si l'utilisateur le souhaite, il pourra manipuler ces variables à partir de l'application.

Plus précisément, je travaille sur un script qui exécute une série d'équations basées sur la latitude et la longitude sélectionnées par l'utilisateur, et affiche les résultats dans une chaîne de caractères, y compris le nom de la ville. Si l'utilisateur le souhaite, il peut choisir une autre ville et relancer le script sur la base de cette ville.

Choisir une autre ville, définir les variables et réexécuter le script en conséquence est tout à fait possible. Je peux simplement mettre en place une sous-routine contenant le code suivant :

set choice to choose from list {"City A","City B","City X"}
if choice is "City A"
    set city to "City A"
    set lat to (latitude of City A)
    set lon to (longitude of City A)
else if choice is "City B"
...

Mon problème est que je dois initialiser ces variables lorsque le script démarre. Je peux définir une valeur prédéfinie pour ces variables, ou je peux exécuter ce sous-programme au début du script, mais je n'arrive pas à trouver un moyen de sauver le choix pour les prochaines exécutions, de sorte que le résultat de ce choix devienne la valeur par défaut. En d'autres termes, si le script exécute par défaut ces équations pour la ville A et que je choisis la ville B dans la liste, la prochaine fois que le script s'exécutera, il devra exécuter automatiquement les équations pour la ville B, sans aucune intervention de l'utilisateur.

J'ai essayé de créer un deuxième script avec exactement trois lignes de code :

property city : "City A"
property longitude : (longitude of City A)
property latitude : (latitude of City A)

mais j'ai réalisé par la suite que cela échouait pour exactement le même problème : les Applescripts ne peuvent pas sauvegarder des variables à l'intérieur d'eux-mêmes entre les tâches. Je peux mettre à jour une variable externe une fois qu'elle est chargée dans le script actuel, mais cela ne modifie pas le script original.

J'ai également essayé de créer un fichier vierge quelque part et de le renommer selon le choix de l'utilisateur, puis de tester le nom du fichier et de mettre à jour les variables en conséquence, mais j'aimerais également partager l'application pour que d'autres puissent l'utiliser, et cela nécessiterait qu'ils aient également ce fichier dans un dossier spécifique. Pour une raison quelconque, script Editor n'aime pas quand j'essaie d'obtenir le chemin d'accès d'un fichier à l'intérieur d'un paquetage d'application, donc à moins qu'il n'y ait un correctif pour cela, je ne peux pas simplement cacher le fichier à l'intérieur de l'application elle-même.

J'ai vu ici que si vous enregistrez le fichier en tant que .applescript vous pouvez faire en sorte qu'il s'écrive sur lui-même, mais je ne sais pas comment procéder.

Je sais qu'il existe une chose appelée Database Events que je pourrais éventuellement manipuler, mais je ne suis pas sûr de la manière dont je m'y prendrais.

Le minimum que je recherche est un moyen de sauvegarder les variables pour y accéder lors du prochain lancement, mais si quelqu'un pouvait aborder toutes les possibilités que j'ai mentionnées ci-dessus, ce serait excellent.

2voto

Groo Points 1267

Ajouter un property au début de votre script. Les modifications apportées à cette propriété pendant l'exécution de votre script seront enregistrées et disponibles lors de la prochaine exécution.

La valeur définie par une définition de propriété n'est pas réinitialisée à chaque fois que le script est exécuté ; elle persiste jusqu'à ce que le script soit recompilé. [ src ]

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