Ця проблема пов'язана з дублюванням подій з підписаних календарів до окремого календаря iCloud, яким я користуюся. Коли календар початкового періоду добре структурований, все працює як слід. Мій Applescript дублює подію, а після наступних запусків дублікат дій навіть оновлює будь-яку змінену інформацію в подіях (я припускаю, що він бачить відповідність UID
і змінює подію, а не повторює його).
Наразі у мене є календар, який встановлює UID
до повного продування URL (він також спочатку мав проблему з часовими поясами, які я виправив, саме тому duplicate
включає дату початку та завершення). Це створює проблеми з дублюванням, я вважаю, що нові події мають свої UID
У деяких символах видалено / замінено ( /
, :
) і вони перестають відповідати.
http://domain.com/folder/page.php?eventid=3675 becomes
http__domain_com_folder_page.php?eventid=3675
Першою думкою було використання регулярного виразу через sed для створення більш стандартного UID
...
repeat with theEvent in theEventsList
tell theEvent
...
set oldUID to the uid
set theCommandString to "echo \"" & oldUID & "\" | sed 's:http\\://\\([a-z.]*\\)/\\([a-z0-9]*\\)/[a-z.]*\\?\\([a-z]*\\)\\=\\([0-9]*\\):\\2-\\3\\4@\\1:'" as string
set newUID to do shell script theCommandString
...
end tell
end repeat
Результатом є, folder-eventid3675@domain.com
. Але тепер я застряг. Duplicate
, ні make
, схоже, хочу дозволити мені створити нову подію, де я включаю uid
у властивостях.
make new event at end of calendar sportsCalendar with properties {start date:startTime, end date:endTime, uid:newUID, url:passURL, description:passDescription, summary:passSummary, location:passLocation}
-
duplicate theEvent to end of calendar sportsCalendar with properties {start date:startTime, end date:endTime, uid:newUID}
Обидва дають обробник AppleEvent не вдалося, помилка -10000. На даний момент я пробував так багато варіантів, що я втратив.
У якийсь момент я спробував встановити оригінал UID
до мого згенерованого. Це призвело до іншої помилки, -10006 ...
Calendar got an error: Can’t set uid of event to "folder-eventid3675@domain.com".
Я можу жити без деяких з цих речей, але на даний момент я дійсно просто цікаво, що я роблю неправильно. Чи є спосіб виправити UID і дублювати подію з одного календаря на інший? Дякую!
Редагувати:
Оновлення команди sed, щоб бути трохи більш чистим. На жаль, вона все ще вимагає подвійного втечі за купу штук.
Також додаємо трохи більше коду, щоб показати, як створюються речі.