4 votes

Puis-je modifier les détails d'un événement du calendrier avec AppleScript ?

Je suis un développeur chevronné, mais très novice en matière d'AppleScript.

Je voudrais modifier certains détails d'un événement dans un calendrier.

J'ai trouvé la bibliothèque dans l'éditeur script, et je me suis rendu à la section Calendrier. Je ne sais pas du tout où aller à partir de là.

En particulier, je voudrais modifier un détail qui est pas dans la bibliothèque, donc je ne suis pas tout à fait optimiste. Ce détail est le fuseau horaire en particulier pour les heures de départ et d'arrivée. Ces informations se trouvent dans le ical vevent qui se trouve dans les données brutes.

Jusqu'à présent, j'en suis encore à expérimenter la lecture de ce qui s'y trouve :

set calendarName to "Work Travel"
set now to date "Wednesday, 1 March 2017 at 12:00:00 am"

tell application "Calendar" to tell calendar calendarName
    set currentEvents to get every event where its start date  now
    repeat with e in currentEvents
        set start to start date of e
    end repeat
end tell

Mon système actuel est MacOS 10.12 Sierra.

1voto

Chrygore Points 939

Shane Stanley dispose d'une bibliothèque qui vous permet de modifier le fuseau horaire : https://www.macosxautomation.com/applescript/apps/Script_Libs.html


Mise à jour de ma réponse initiale :

En fait, votre question m'a incité à utiliser la bibliothèque et j'ai trouvé un bug dans le code de modification du fuseau horaire, qui est maintenant corrigé.

Pour créer (ou modifier) un événement, vous n'avez pas besoin de Calendar. Utilisez simplement cette bibliothèque.

Le code ici est presque à 100% celui des exemples, j'ai juste ajouté la ligne concernant la modification du fuseau horaire :

use script "CalendarLib EC" -- put this at the top of your scripts
use scripting additions

    set d1 to current date
    set d2 to d1 + 1 * hours
    set theStore to fetch store
    set theCal to fetch calendar "test" cal type cal cloud event store theStore -- change to suit
    set theEvent to create event event store theStore destination calendar theCal event summary "A test event" starting date d1 ending date d2 event location "Around here" event description "some notes" without runs all day
    set theEvent to modify zone event theEvent time zone "Asia/Tokyo"
    store event event theEvent event store theStore
    return event identifier for event theEvent

Vous pouvez trouver les fuseaux horaires disponibles de cette façon :

use AppleScript version "2.4" -- Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

current application's NSTimeZone's knownTimeZoneNames() as list

La discussion elle-même est ici : https://lists.apple.com/archives/applescript-users/2017/Dec/msg00006.html

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