スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | page top↑
Yahoo!テレビからカレンダーに登録
YahooテレビiCalへの登録後 Mac使いの私が愛読している日経BPのコラム、「みやしたゆきこ『iPhone様とMacさんと私』」の最新記事「今度こそiPhoneを手帳として使いこなしたい!の巻」の最後に、「Yahoo!テレビにはYahoo!カレンダーとの連携機能があります。<中略>Googleカレンダーにもこういう機能が欲しい!」と書いてあったのが、頭に引っかかった。確かにTV番組の予定がカレンダーに書き込めると便利かも?
 実現方法をあれこれ考えたけど、AppleScript なら何とかなりそうとプログラマをしてみた。Googleカレンダーに直接書き込むことは力不足でできなかったが、iCalにGoogleと連携するカレンダーを作って、そこに書き込めばOKということで実現してみた。
ソースを公開しますので、ご活用ください。
手順は
 このプログラムを「AppleScript エディタ.app」にコピー&ペーストしてアプリケーションとして保存します。これで準備完了!
 後は、Yahoo! のテレビで登録したい番組を表示します。(例:左の画像)
そのまま先のアプリケーションをダブルクリックして起動すれば、iCalに登録されます。(登録するカレンダーを選ぶダイアログが出ます)
 右の画像は登録されたカレンダーの詳細を表示したものです。
<日付のエラーが出る場合は、システム環境設定の言語とテキストの書式タブで地域を日本に、暦法を西暦に設定してみてください>

------------ 以下、AppleScript のソース ----------------


--
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 normalize(sDT)
set eDT to dt & " " & eTime & ":00" as text
set eDT to normalize(eDT)
tell application "iCal"
activate
name of calendars whose writable is true
set selectedCalendar to choose from list result
if selectedCalendar is false then return
set selectedCalendar to selectedCalendar as Unicode text
get calendar selectedCalendar
make event at end of events of (calendar selectedCalendar) with properties {summary:pTitle, start date:date sDT, end date:date eDT, description:pComment}
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
----------------------- 以上 -------------------------
スポンサーサイト
【2009/12/11 22:21】 | Mac好き | トラックバック(0) | コメント(0) | page top↑
<<Googleカレンダーへの登録もできた! | ホーム | ニルヴァーナでインディアン・ディナー>>
コメント
コメントの投稿














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

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