1 votes

Comment itérer sur les rappels à l'aide d'AppleScript

Je suis en train d'essayer d'écrire un script AppleScript qui itère simplement sur les rappels non complétés et affiche le nom. Le code ci-dessous génère cette erreur: les Rappels ont renvoyé une erreur: Impossible de convertir le nom du rappel (identifiant du rappel \"x-apple-reminder://838D4BDF-C520-440A-ADF2-B66FD602ADDC\") en type string

J'ai réussi à le faire fonctionner en itérant de 1 à (nombre de notCompleted); mais j'aimerais comprendre pourquoi le code ci-dessous ne fonctionne pas. (Le fait que je m'attende à ce que le code ci-dessous fonctionne suggère que je ne comprends pas quel type d'objets se trouvent dans notCompleted.) Que contient exactement notCompleted, et quel est exactement le type de currentReminder?

tell application "Reminders"
    set snoozeList to "Snooze"
    set notCompleted to reminders in list snoozeList whose completed is false
    repeat with currentReminder in notCompleted
        display dialog (nom du rappel currentReminder)
    end repeat
end tell

2voto

OnePablo Points 1

Votre compréhension semble juste, à part deux petits détails. Comme vous le savez déjà, notCompleted contient une liste de rappels non complétés. La variable currentReminder dans chaque itération de la boucle de répétition contiendra donc un seul objet reminder. Par conséquent, premièrement, vous n'avez pas besoin (ou plutôt, vous ne devriez pas) utiliser le spécificateur reminder dans nom du rappel currentReminder. Au lieu de cela, utilisez simplement nom de currentReminder.

Cela ne résout pas entièrement le problème car le nom de currentReminder est renvoyé dans un format partiellement déréférencé (ce dont je ne vais pas parler ici, mais qui est une conséquence de la manière dont les éléments sont énumérés sous-jacents). Cela signifie que pour accéder aux données textuelles réelles, vous devez soit le convertir en text comme ceci:

afficher dialogue (nom de currentReminder en tant que texte)

ou utiliser la commande get, qui fait essentiellement la même chose:

afficher dialogue (get nom de currentReminder)

Donc ce n'est pas une erreur de votre part au sens strict, juste des particularités d'AppleScript.

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