【问题标题】:Reading iCal info from file to make iCal event从文件中读取 iCal 信息以制作 iCal 事件
【发布时间】:2011-05-10 01:25:26
【问题描述】:

我有一个包含 iCal 事件信息的文件 (/test.txt)。

Friday, May 6, 2011 4:00:00 PM
05/08/2011 11:20:00 PM
summary
location

Friday, May 6, 2011 4:00:00 PM
05/08/2011 11:20:00 PM
summary
location

这是读取此文件以制作 iCal 事件的 applescript。

set Names to paragraphs of (read ("/test.txt"))
set my_list to {}
set temp_list to {}
repeat with nextLine in Names
    if length of nextLine is greater than 0 then
        set temp_list to temp_list & nextLine
    else
        copy temp_list to end of my_list
        set temp_list to {}
    end if
end repeat

repeat with e in my_list
    set my_list to {}
    tell application "iCal"
        tell calendar "Todo"
            set new_event to make new event at end of events
            tell new_event
                repeat with j from 1 to count e
                    set content to item j of e
                    if j is 1 then
                        set start date to date content --> Error
                    end if
                    if j is 2 then
                        set end date to date content
                    end if
                    if j is 3 then
                        set summary to content
                    end if
                    if j is 4 then
                        set location to content
                    end if
                end repeat
            end tell
        end tell
    end tell
end repeat

运行此代码给我一个错误

为什么会出现这个错误?

【问题讨论】:

    标签: applescript icalendar


    【解决方案1】:

    你有两个问题,首先你需要在循环之后添加最后一个事件,然后你试图在 ical tell 块中设置日期,由于某种原因它不起作用所以我也把它从 tell 块中取出稍微改进了代码

    set theData to read ("path:to:test.txt" as alias)
    set ParaCount to count of paragraphs of theData
    
    set my_list to {}
    set temp_list to {}
    
    repeat with i from 1 to ParaCount
        set thispara to paragraph i of theData
        if thispara is equal to "" then
            copy temp_list to end of my_list
            set temp_list to {}
        else
            set temp_list to temp_list & thispara
        end if
    end repeat
    copy temp_list to end of my_list -- copy the last one to the list
    
    repeat with aEvent in my_list
        set {start_date, end_date, sum, loc} to aEvent
        set start_date to date start_date
        set end_date to date end_date
    
                --reduced to single line
        tell application "iCal" to make new event with properties {start date:start_date, end date:end_date, summary:sum, location:loc} at end of events of calendar "Todo"
    end repeat
    

    结束重复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 2013-01-27
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多