前回は単発イベントを追加するためのブックマークレットを作りました
Hello! Project公式サイトのイベント情報からGoogleカレンダーに簡単に登録したい - みにしげさゆみさんへ
今回はコンサートツアーのページにGoogleカレンダーへイベントを追加するブックマークレットです。
PC環境のGoogleChromeとIE11で動作確認しました。FireFoxも多分大丈夫だと思います*1。
モバイル環境だとandroid機とiPhone(SafariとGoogleChrome)で動作確認しましたが、ブラウザのGoogleカレンダーがモバイル表示だと動作しないのでPCサイト表示にしないと駄目っぽいです
javascript:(function(){var calT=document.getElementsByTagName('h2')[1].innerText;var trl=document.getElementsByTagName('tr');for(i=1;i<trl.length;i++){var gcal=document.createElement('a');var trNode=trl[i].children;var cD=trNode[0].innerText.replace(/\(.+\)/gi,'').split('/');var cH=trNode[3].innerText.replace(/:/gi,'')+ '00';var cL=trNode[1].innerText.replace(/終了 /gi,'');var calD=new Date().getFullYear() + ('0' + cD[0]).slice(-2) + ('0' + cD[1]).slice(-2) + 'T' + cH;calD=calD + '/' + calD;gcal.href='https://www.google.com/calendar/render?action=TEMPLATE&text=' + calT + '&dates=' + calD + '&location=' + cL + '&details=' + document.URL;gcal.innerText=trNode[0].innerText;trNode[0].innerText='';trNode[0].appendChild(gcal);};})();
上のコードをコピーするか、下のリンクをお気に入りに追加すると使えます
ツアー日程をGoogleカレンダーに追加
ツアー日程をGoogleカレンダーに追加(for FireFox)
使い方
ツアー日程のページで実行すると
日程の部分がリンクに置き換わるのでリンクを開くと
Googleカレンダーのイベント追加のページに移動します。
開始時間と終了時間共に開演時間になるので終了時間は必要であれば各々で修正してください。
イベント追加のページに自動で入る部分は、ツアータイトル・日時・開演時間・公演場所・ツアーページのURLです。
開演時間じゃなくて開場時間が良いという場合はtrNode[3]の部分をtrNode[2]にすると良いと思います。その他自分の好きなように弄って下さい。
追記2015/03/13 0:54
@demodori_mw 有用なブックマークレットありがとうございます助かります。使ってみましたが2点気になりました。
① FirefoxはinnerTextは対応してないみたいです。textContetで動作しました。
(つづく)
— キャスパー (@casper2253) March 12, 2015
@demodori_mw
② 祝日は曜日が(水・祝)のように1文字とは限らないので replace(/\(.+\)/gi,'') のように1文字以上にした方が良いのではと思います。
— キャスパー (@casper2253) March 12, 2015
キャスパーさんからアドバイス頂いたので反映。日付の修正はしました。FireFoxは分岐が面倒なので別途作りました↓
FireFox版
javascript:(function(){var calT=document.getElementsByTagName('h2')[1].textContent;var trl=document.getElementsByTagName('tr');for(i=1;i<trl.length;i++){var gcal=document.createElement('a');var trNode=trl[i].children;var cD=trNode[0].textContent.replace(/\(.+\)/gi,'').split('/');var cH=trNode[3].textContent.replace(/:/gi,'')+ '00';var cL=trNode[1].textContent.replace(/終了 /gi,'');var calD=new Date().getFullYear() + ('0' + cD[0]).slice(-2) + ('0' + cD[1]).slice(-2) + 'T' + cH;calD=calD + '/' + calD;gcal.href='https://www.google.com/calendar/render?action=TEMPLATE&text=' + calT + '&dates=' + calD + '&location=' + cL + '&details=' + document.URL;gcal.textContent=trNode[0].textContent;trNode[0].textContent='';trNode[0].appendChild(gcal);};})();
終わり