Vấn đề này bắt nguồn từ việc sao chép các sự kiện từ lịch đã đăng ký vào một lịch iCloud duy nhất mà tôi chia sẻ với ai đó. Khi lịch gốc được cấu trúc tốt, mọi thứ hoạt động như mong đợi. Bản sao của tôi sao chép sự kiện và trong các lần chạy tiếp theo, hành động trùng lặp thậm chí cập nhật mọi thông tin đã thay đổi trong các sự kiện (Tôi cho rằng nó nhìn thấy sự trùng khớp UID
và sửa đổi sự kiện thay vì tạo lại nó).
Tôi hiện có một lịch đặt nó UID
thành một URL đầy đủ (ban đầu nó cũng có vấn đề với các múi giờ tôi đã khắc phục, đó là lý do tại sao duplicate
bao gồm ngày bắt đầu và ngày kết thúc). Điều này tạo ra các vấn đề với việc sao chép, tôi tin, bởi vì các sự kiện mới UID
có một số ký tự bị tước / thay thế ( /
, :
) và chúng ngừng khớp với nhau.
http://domain.com/folder/page.php?eventid=3675 becomes
http__domain_com_folder_page.php?eventid=3675
Suy nghĩ đầu tiên là sử dụng biểu thức chính quy thông qua sed để tạo ra một tiêu chuẩn hơn 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
Kết quả là folder-eventid3675@domain.com
. Nhưng bây giờ tôi bị mắc kẹt. Duplicate
, cũng không make
, dường như muốn cho tôi tạo một sự kiện mới mà tôi đưa uid
vào các thuộc tính.
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}
Cả hai đều cung cấp cho trình xử lý AppleEvent không thành công, lỗi -10000. Tại thời điểm này, tôi đã thử rất nhiều biến thể.
Tại một thời điểm, tôi đã cố gắng thiết lập bản gốc UID
cho bản gốc của mình. Và điều đó dẫn đến một lỗi khác, -10006 ...
Calendar got an error: Can’t set uid of event to "folder-eventid3675@domain.com".
Tôi có thể sống mà không có một số thứ này, nhưng tại thời điểm này tôi thực sự chỉ tò mò về những gì tôi đang làm sai. Có cách nào để sửa UID và sao chép một sự kiện từ lịch này sang lịch khác không? Cảm ơn!
Chỉnh sửa:
Cập nhật lệnh sed để sạch hơn một chút. Đáng buồn thay, nó vẫn yêu cầu thoát gấp đôi cho một loạt các mảnh.
Ngoài ra, thêm một chút mã để hiển thị cách mọi thứ được xây dựng.