Dọn dẹp sự kiện lịch trước / trong khi sao chép


0

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 UIDvà sửa đổi sự kiện thay vì tạo lại nó).

Tôi hiện có một lịch đặt nó UIDthà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 duplicatebao 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 UIDcó 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 uidvà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 UIDcho 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: Cant 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 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.


Tôi biết đó là một cú pháp khá phổ biến, nhưng sử dụng dấu gạch chéo trong sed làm cho lệnh dài hơn nhiều so với các trường hợp phổ biến do phải thoát tất cả các dấu gạch chéo trong một đường dẫn hoặc URL. Dấu chấm phẩy được ưa thích hơn.
William T Froggard

Cảm ơn @Froggard, tôi sẽ ghi nhớ điều đó và cố gắng xóa cú pháp một chút. May mắn thay, điều đó dường như không phải là vấn đề gây ra.
Vagari
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.