Estoy tratando de escribir un AppleScript bastante simple para automatizar el proceso de hacer que los eventos del Calendario se repitan en masa. Específicamente, quiero que cada evento en un calendario dado dentro de un periodo de tiempo dado tenga su repetición establecida como quincenal.
Esto parece ser una tarea bastante rutinaria y rápida, pero el script a continuación, cuando se ejecuta en aproximadamente 30 eventos en un lapso de una semana, tarda alrededor de una hora y media en completarse. Además, esto solo es cierto si dejo la computadora sin tocar mientras se ejecuta el script; si intento usar la computadora portátil al mismo tiempo, el script eventualmente falla con un error que indica que un Evento de Apple se cronometró.
De hecho, iterar a través de los eventos del calendario y acceder o modificar cualquiera de sus propiedades parece llevar un tiempo astronómicamente largo en AppleScript (por ejemplo, simplemente llamar a log
en el summary
de cada evento). He intentado mover la búsqueda de eventos a una variable separada y usar atributos que no sean fechas de eventos para buscar los eventos, pero nada parece mejorar el rendimiento.
¿Cuál es la razón de esta increíble lentitud y qué se puede hacer para aliviarla? ¿O es simplemente una parte inherente de AppleScript / Scripting Bridge de macOS / Calendario en sí mismo?
Aquí está el script en cuestión:
tell application "Calendar"
set cal to calendar 1 whose name is "Schedule"
set theStartDate to date "Sunday, January 27, 2019 at 00:00:00"
set theEndDate to date "Saturday, February 2, 2019 at 00:00:00"
repeat with e in (every event of cal whose start date is greater than theStartDate and start date is less than theEndDate)
set esStartDate to e's start date
set theWeekday to weekday of esStartDate
set lower to text 1 thru 2 of (theWeekday as string)
set upper to do shell script "echo " & lower & " | tr [:lower:] [:upper:]"
set e's recurrence to "FREQ=WEEKLY;INTERVAL=2;UNTIL=20190602T035959Z;BYDAY=" & upper & ";WKST=SU"
end repeat
end tell
Al ver la consola de "Respuestas", el script se ralentiza tanto en el Evento de Apple inicial count every event of calendar id "[ID]"
como en cada intento de modificar la recurrencia de un evento.
Estoy ejecutando macOS Mojave 10.14.2 (Calendario 11.0) en un MacBook Pro de principios de 2015.
0 votos
@CJK eso es posible, pero incluso solo hacer
log summary de e como texto
en el bucle —sin ningún script de shell o cálculo adicional— hace que funcione lentamente.0 votos
@CJK Desafortunadamente, usar
una referencia a
parece ser tan lento como el enfoque original.