【问题标题】:AppleScript to move specific iCal events on by one weekAppleScript 将特定 iCal 事件提前一周
【发布时间】:2023-03-29 08:48:01
【问题描述】:

我根据某个开始日期为不同的客户安排了为期 6 周的 iCal 活动。即客户端 1,2 和 3 在下周一开始,我在 6 周内设置了几个 iCal 事件,这些事件将触发其他不同的 AppleScript 等。(效果很好,但是......)

如果客户 2 决定比 1 和 3 晚 1 周参加该计划,并且我已经安排了他的活动,我如何在 iCal 中为客户 2 选择已经创建的活动并将它们全部上移一周?

这是我到目前为止所得到的:

tell application "Calendar"
tell calendar "ExampleCalendar"
set theEventList to every event whose summary contains "Client2"
end tell
end tell

这将选择事件,现在我如何将它们全部向上移动一周(它们显然都有不同的开始日期并且间隔不等)

这将使我的生活更轻松!谢谢。

【问题讨论】:

    标签: events date applescript move icalendar


    【解决方案1】:

    更新:

    优胜美地用户现在可以reference selected Calendar events in AppleScript

    试试:

    set daysAdded to 7
    
    tell application "iCal"
        tell calendar "ExampleCalendar"
            set theEventList to every event whose summary contains "Client2"
            repeat with anEvent in theEventList
                tell anEvent
                    set it's end date to (it's end date) + daysAdded * days
                    set it's start date to (it's start date) + daysAdded * days
                end tell
            end repeat
        end tell
    end tell
    

    这是另一种方法。

            tell anEvent
                set {sDate, eDate} to {(it's start date), (it's end date)}
                set it's start date to sDate + daysAdded * days
                set it's end date to eDate + daysAdded * days
            end tell
    

    【讨论】:

    • 谢谢你,它工作(大部分)。发生的情况如下:活动的开始日期被移动了 7 天,但它们的新结束日期是从新开始日期算起的 7 天。即事件现在有 7 天之久。如果我删除该行:set it's end date to (it's end date) + daysAdded * days,则事件将继续进行,但新的结束日期现在与新的开始日期相同。
    • 是否需要手动设置结束日期? “将开始日期设置为开始日期 + daysAdded * days”应该可以完成这项工作
    • @user1812282。好点子。更改命令的顺序应该可以解决问题。查看我的编辑版本。
    • 抱歉我的回复晚了。我终于解决了,你的建议奏效了。我交换了订单,效果很好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 2012-05-28
    • 2010-10-09
    相关资源
    最近更新 更多