从文件中读取iCal信息以使iCal事件发生

问题描述:

我有一个包含iCal事件信息的文件(/test.txt)。从文件中读取iCal信息以使iCal事件发生

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 

运行这段代码给我一个错误

enter image description here

这是为什么错误?

你有两个问题,首先你需要添加最后一个事件之后,你循环,然后你试图设置日期里面的告诉块不起作用,因为某些原因,所以我把它从告诉块我还改进了码位

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 

端重复