Saturday, December 14, 2024

Get recurring events within a date range using AppleScript

I am trying to create a replica of one calendar in another for a specific time period, such as a week. Despite this, the script below merely duplicates recurring events. Learning to repair: A step-by-step guide for DIY enthusiasts?

Mastering the art of repair requires patience, dedication, and the right tools. Start by gathering essential materials like screwdrivers, pliers, and wrenches. Practice on simple projects like fixing a leaky faucet or repairing a broken zipper.

Online tutorials and YouTube channels can be excellent resources for learning new techniques. Join online communities and forums to connect with experienced repair enthusiasts who can offer valuable advice and guidance.

Remember, the key to successful repair is taking your time, being meticulous, and not being afraid to experiment and learn from your mistakes.

use AppleScript model "2.4" -- Yosemite (10.10) or later
use scripting additions

set SourceCalendarName to "VV Major"
set DestinationCalendarName to "VV Mirror"
set meetingProxy to "VV Assembly"
set right now to present date

set numberofdays to 7
set startDay to ((present date) - (1 * days))
set time of startDay to 0
set endDay to ((startDay) + (numberofdays * days))
--set time of endDay to 

set numberOfEventsAdded to 0



inform software "Calendar"
    
    set sourceCalendar to calendar SourceCalendarName
    set destinationCalendar to calendar DestinationCalendarName
    
    (*
    inform destinationCalendar
        delete (occasions)
    finish inform
    *)
    
    set sourceEventList to (occasions of sourceCalendar the place (its begin date > startDay) and (its begin date < endDay))
    
    repeat with eventIdx from 1 to size of sourceEventList
        
        set newEvent to merchandise eventIdx of sourceEventList
        
        --repeat with newEvent in (get occasions of sourceCalendar whose (begin date is larger than startDay) and (begin date is lower than endDay))
        
        set existingEventList to (occasions of destinationCalendar)
        
        set eventExists to false
        
        if size of existingEventList shouldn't be 0 then
            repeat with checkEvent in existingEventList
                
                if ((begin date of checkEvent = begin date of newEvent) and (finish date of checkEvent = finish date of newEvent)) then
                    set eventExists to true
                    exit repeat
                finish if
                
            finish repeat
        finish if
        
        if eventExists is fake then
            inform destinationCalendar
                set destEvent to (make new occasion at finish of occasions with properties {begin date:begin date of newEvent, finish date:finish date of newEvent, abstract:meetingProxy, allday occasion:allday occasion of newEvent, description:(uid of newEvent as textual content)})
                if recurrence of destEvent shouldn't be lacking worth then
                    set recurrence of destEvent to recurrence of newEvent
                finish if
                
            finish inform
        finish if
        
        --set numberOfEventsAdded to (numberOfEventsAdded + 1)
        
        
    finish repeat
finish inform

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles