2016-06-26 2 views
0

Dans Javascript for Automation, il est possible de créer un objet élément puis de l'ajouter à un conteneur. Par exemple:Suppression de l'élément et/ou de la relation élément-conteneur dans JXA (Javascript for Automation)

var cal = Application('Calendar') 
    var newEvent = cal.Event(
      {  
       summary: todoSummary, 
       startDate: new Date(), 
       endDate: endDate 
      } 
    ); 
    cal.calendars[0].events.push(newEvent); 
} 

Cette méthode de travail est bien décrit et documenté dans de nombreux endroits, tels que le calendrier (iCal) n'a pas besoin d'avoir ses propres méthodes pour ce faire.

Comment peut-on supprimer un objet (événement, etc.) du conteneur (événements), ou au moins supprimer la relation entre cet événement et son calendrier? En AppleScript on écrirait:

delete (every event whose uid is eventID) 

Il semblerait que la version JXA serait quelque chose comme:

cal.calendars.events.delete.whose({uid: event.uid()}) 

Mais diverses tentatives me donnent invalid key forms ou Can't convert types erreurs. Merci!

Répondre

0

Il se trouve que la méthode delete réside lui-même sur l'objet Application, donc, il était aussi simple que:

// delete most recent message on first calendar 
var ical = Application('Calendar'); 
var ev = ical.calendars[0].events.last(); 
ical.delete(ev); 

// and specifically for OS X calendar: 
ical.reloadCalendars();