2

Word doc テーブルで授業スケジュールと学期計画を取得します。このデータを iCal に取り込む方法があるかどうか知りたいです。これらのテーブルを Excel ファイルにコピーしてそこから iCal にインポートするよりも、iCal でイベントを作成する方がはるかに時間がかかります。

データは 1 日のイベント、つまり House-Gala Friday 22/02/2013 で、残りのデータは 2 週間または 3 週間のイベント、つまり 3 Weeks - Gr.10 Maths - Topic:Exponents (これらのイベントは 5日イベント (月曜日から金曜日) が 3 週間繰り返されます。)

これはインターネットから入手したスクリプトですが、最初に表示されるエラーは、.csv ファイルのテキストを Unicode 型に変換できないというものです。

スクリプトの後半にある別の問題は、これらの 5 日間のイベントを 3 週間または 2 週間繰り返すことです。

どんな助けでも大歓迎です。これは私がこれまでに持っているものです:

  --Convert CSV file to iCal events
  --Prompts for file, then processes
  --expects date,start time,end time,event name,xxxx,calendar name
  --eg 12/01/2006,20:30,22:00,Water Committee,,TestCal
  --change the various text item ns if data order in a file line is different
  --blank lines skipped
  --if other data present (eg location, notes ...) add a line in the tell calendar Calno loop
--to include it eg set location to text item 5 of ThisLine
set OldDelimiters to AppleScript's text item delimiters
set LF to ASCII character 10
set theFile to choose file with prompt "Select CSV calendar file"
set theLines to read theFile
set AppleScript's text item delimiters to {LF}
set theLines to paragraphs of theLines
set AppleScript's text item delimiters to {","}
repeat with ThisLine in theLines
    if (count of ThisLine) > 0 then --ignore blanks
        set StartDate to date (text item 1 of ThisLine & " " & text item 2 of ThisLine)
        set EndDate to date (text item 1 of ThisLine & " " & text item 3 of ThisLine)
        set CalName to word 1 of text item 6 of ThisLine
        tell application "Calendar"
            set CalList to title of every calendar
            if CalName is in CalList then
                repeat with CalNo from 1 to count of CalList
                    if CalName is item CalNo of CalList then exit repeat
                end repeat
            else
                set NewOne to make new calendar at end of calendars with properties {title:CalName}
                set CalNo to 1 + (count of CalList)
            end if
            tell calendar CalNo
                set newItem to make new event at end of events with properties {start date:StartDate}
                set summary of newItem to text item 4 of ThisLine
                set end date of newItem to EndDate
            end tell --calendar
        end tell --iCal
    end if
end repeat
set AppleScript's text item delimiters to OldDelimiters

返信ありがとうございます。これは私がこれまでに持っているものです。イベントの繰り返しの COUNT として NumberCount を使用する繰り返しを取得できません。

set text item delimiters to ";"
repeat with l in paragraphs of (read "/Users/pienaar0/Desktop/test.csv" as «class utf8»)
if contents of l is not "" then
    set sd to date (text item 1 of l & " ")
    set ed to date (text item 2 of l & " ")
    set NumberWeeks to (text item 4 of l & " ")
    set NumberCount to NumberWeeks - 1
    tell application "Calendar" to tell calendar "Test"
        make new event with properties {allday event:true, start date:sd, end date:ed, summary:text item 3 of l, recurrence:"FREQ=WEEKLY;COUNT=2 * NumberCount"}

    end tell
end if
 end repeat
4

1 に答える 1

2
set text item delimiters to ","
repeat with l in paragraphs of (read "/Users/username/Desktop/test.csv" as «class utf8»)
    if contents of l is not "" then
        set sd to date (text item 1 of l & " " & text item 2 of l)
        set ed to date (text item 1 of l & " " & text item 2 of l)
        tell application "Calendar" to tell calendar "Test"
            make new event with properties {start date:sd, end date:ed, summary:text item 4 of l}
        end tell
    end if
end repeat

test.csv:

01/25/2013,10:30PM,11:00PM,test event
01/26/2013,00:00AM,01:00AM,test event2
于 2013-01-25T20:07:59.630 に答える