スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | page top↑
Googleカレンダーへの登録もできた!
YahooTVをGoogleカレンダーへ
 昨日、Yahoo!のテレビ番組の情報を Google カレンダーに登録するかわりに、iCal のカレンダーに登録する AppleScript を公開しましたが、その後、
http://www.google.com/googlecalendar/event_publisher_guide_detail.html
の情報を見つけたので、iCal阪(昨日のヤツ)に加えて、Googleカレンダー阪も作成した。昨日まで Googleカレンダーへの登録方法が解らなかったおかげで、iCal阪と二つできたのは、塞翁が馬ということですね。(笑)
 AppleScriptのソースは以下に掲載します。iCal阪との大きな違いは、Googleカレンダーには時刻をUTCに変換する必要があること。それに、データをURLエンコードする必要があって、これはちょっと苦労しましたが、Webに情報があって助かりました。ついでにソースに少しコメントを付けておきました。
(バックスラッシュが¥に置き換えられておりますので、コピー&ペースト後はバックスラッシュに戻してください)
------------------ 以下 AppleScript のソース -------------------
-- Yahoo! テレビの番組を Google Calendar に登録する
-- author: y_nomura 2009
tell application "Safari"
set yahooData to (text of document 1) as text
end tell
repeat with i from 1 to the number of paragraphs of yahooData
set eachPh to paragraph i of yahooData
set ln to the length of eachPh
if ln > 31 then
if character 6 of eachPh = "/" and character 9 of eachPh = "/" and character 15 of eachPh = ":" then
set dt to characters 2 thru 11 of eachPh as text -- 日付
set dLoc to characters 31 thru (the length of eachPh) of eachPh as text -- 放送局名
set sTime to characters 13 thru 17 of eachPh as text -- 開始時刻
set eTime to characters 19 thru 23 of eachPh as text -- 終了時刻
end if
end if
if ln > 3 then
if character 2 of eachPh = "•" then
set pTitle to characters 4 thru (the length of eachPh) of eachPh as text -- 番組名
set pComment to ""
set eachPh to paragraph (i + 1) of yahooData
set ln to the length of eachPh
if ln > 3 then
set pComment to characters 4 thru (the length of eachPh) of eachPh as text -- 番組詳細
else
set pComment to ""
end if
exit repeat
end if
end if
end repeat
set sDT to dt & " " & sTime & ":00" as text
set sDT to JST2UTC(normalize(sDT))
set eDT to dt & " " & eTime & ":00" as text
set eDT to JST2UTC(normalize(eDT))

-- Google Calendar 用URI 組み立て (cf: http://www.google.com/googlecalendar/event_publisher_guide_detail.html)
set gURL to "http://www.google.com/calendar/event?action=TEMPLATE&"
set pTitle to do shell script "echo '" & pTitle & "'| perl -pe '~s/([^?w ])/\"%\".unpack(\"H2\", $1)/eg;'"
set pComment to do shell script "echo '" & pComment & "'| perl -pe '~s/([^?w ])/\"%\".unpack(\"H2\", $1)/eg;'"
set dLoc to do shell script "echo '" & dLoc & "'| perl -pe '~s/([^?w ])/\"%\".unpack(\"H2\", $1)/eg;'"
set gText to "text=" & pTitle & "&"
set gDates to "dates=" & sDT & "/" & eDT & "&"
set gDatails to "details=" & pComment & "&"
set gLocation to "location=" & dLoc & "&"
set gPost to "trp=false&sprop=&sprop=name:"
set gCalURL to gURL & gText & gDates & gDatails & gLocation & gPost

tell application "Safari"
make new document with properties {name:"google calendar error", URL:gCalURL}
end tell

on normalize(inDt) -- inDt as "yyyy/mm/dd hh:mm:ss"
set aDate to inDt as text
set H to characters 12 thru 13 of inDt as text
if H ≥ "24" then -- 24時以降?
set H to text -2 thru -1 of ("0" & (H - 24))
set wDate to date ((text 1 thru 11 of inDt & H & text 14 thru 19 of inDt) as text)
set wDate to wDate + (1 * 24 * 60 * 60) -- 翌日を求める
set Y to year of wDate
set M to text -2 thru -1 of ("0" & ((month of wDate) as number))
set D to text -2 thru -1 of ("0" & (day of wDate))
set aDate to Y & "/" & M & "/" & D & " " & H & text 14 thru 19 of aDate
end if
return aDate as text
end normalize

on JST2UTC(inDt) -- inDt as "yyyy/mm/dd hh:mm:ss"
set yesterday to (date inDt) - (time to GMT) -- GMT/UTC
set Y to year of yesterday
set M to text -2 thru -1 of ("0" & ((month of yesterday) as number))
set D to text -2 thru -1 of ("0" & (day of yesterday))
set H to text -2 thru -1 of ("0" & (hours of yesterday))
set f to text -2 thru -1 of ("0" & (minutes of yesterday))
set S to text -2 thru -1 of ("0" & (seconds of yesterday))
set ans to (Y & M & D & "T" & H & f & S & "Z") as text
return ans -- return as google format: "yyyymmddThhmmssZ"
end JST2UTC
----------------------- ここまで -----------------
スポンサーサイト
【2009/12/12 23:43】 | Mac好き | トラックバック(0) | コメント(1) | page top↑
<<バグがありました! | ホーム | Yahoo!テレビからカレンダーに登録>>
コメント
素晴らしいです!
初めまして。
日経パソコンオンラインから飛んで参りました。

TV大好きおっさんの私には、とても嬉しいスクリプトです!
重宝させて頂きます!
【2009/12/17 15:13】 URL | nijinopapa #8iCOsRG2[ 編集] | page top↑
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://ynomura.blog47.fc2.com/tb.php/658-7f229ce5
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。