Очищення події календаря до / під час копіювання


0

Ця проблема пов'язана з дублюванням подій з підписаних календарів до окремого календаря 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, щоб бути трохи більш чистим. На жаль, вона все ще вимагає подвійного втечі за купу штук.
Також додаємо трохи більше коду, щоб показати, як створюються речі.


Я знаю, що це дещо поширений синтаксис, але використання косої риски у sed робить команду набагато довше, ніж це має бути у багатьох поширених сценаріях, оскільки їм потрібно уникнути всіх косих кіл у шляху або URL. Кращими є крапки з комою.
William T Froggard

Завдяки @Froggard, я буду мати це на увазі і спробувати розібратися в синтаксисі. На щастя, це не викликає проблем.
Vagari
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.