
photo credit: Dmitry Karyshev когда ж работать-то? via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Googleカレンダーの記録をスプレッドシートに書き出して活用する方法についてお伝えしています。
前回はこちらの記事でした。
Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに書き出したものからコスト計算をする方法についてお伝えしてきました。
これで、ほぼ当初の目的は達成なのですが、ありがたいことに読者様からこんなご要望を頂きました。
カレンダーの場所・説明も一緒に取得・出力したい!
なるほど!確かに記録としてはあったほうが便利ですよね!
ということで、今回はGoogle Apps ScriptでGoogleカレンダーのイベントの場所と説明を取得する方法です。
では、よろしくお願いいたします!
スクリプトのおさらい
前回はスプレッドシートをあれこれいじってしまいましたので、いったんその前の状態をベースに開始したいと思います。
以下の記事のころですね。
まず、シートはこちらです。
このD列とE列の間に、2列挿入してカレンダーに登録した場所、そして説明を出力したいと思います。
スクリプトはこちらです。
/* 指定月のカレンダーからイベントを取得する */ function getCalendar() { var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得 var no=1; //No var myCal=CalendarApp.getCalendarById('カレンダーID'); //特定のIDのカレンダーを取得 var date='2016/02/01 00:00:00'; //対象月を指定 var startDate=new Date(date); //取得開始日 var endDate=new Date(date); endDate.setMonth(endDate.getMonth()+1); //取得終了日 var myEvents=myCal.getEvents(startDate,endDate); //カレンダーのイベントを取得 /* イベントの数だけ繰り返してシートに記録 */ for each(var evt in myEvents){ mySheet.appendRow( [ no, //No evt.getTitle(), //イベントタイトル evt.getStartTime(), //イベントの開始時刻 evt.getEndTime(), //イベントの終了時刻 "=INDIRECT(\"RC[-1]\",FALSE)-INDIRECT(\"RC[-2]\",FALSE)" //所要時間を計算 ] ); no++; } }
18行目からのappendRowメソッドが取得したイベント情報をシートにう書き込む部分です。
24行目の後に、取得したイベントの場所と説明を出力します。その、24行目も参照が変わりますのでちょっと修正が必要になります。
getLocationでカレンダーイベントの場所を取得する
まず、場所からいきますか。Googleカレンダーのイベントについて場所を取得する場合は、getLocationメソッドを使います。
書き方は
です。
getDescriptionでカレンダーイベントの説明を取得する
次に、Googleカレンダーのイベントについて説明を取得しますが、その場合はgetDescriptionメソッドを使います。
書き方は
となります。簡単ですね。
所要時間の数式を修正する
24行目、R1C1形式の数式ですが、ここはイベントの終了時間から開始時間を減算して、所要時間を求める数式ですね。
2列を挿入するので、参照位置を変更する必要があります。それぞれ-2をしまして
"=INDIRECT(\"RC[-3]\",FALSE)-INDIRECT(\"RC[-4]\",FALSE)"
とします。
INDIRECT関数については以下記事もご参考くださいね。
Googleカレンダーイベントの場所と説明も出力するスクリプト
以上を踏まえて、イベントについて場所と説明も出力に加えたスクリプトを作ってみます。
こちらです。
/* 指定月のカレンダーからイベントを取得する */ function getCalendar() { var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得 var no=1; //mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得 var myCal=CalendarApp.getCalendarById('カレンダーID'); //特定のIDのカレンダーを取得 var date='2016/02/01 00:00:00'; //対象月を指定 var startDate=new Date(date); //取得開始日 var endDate=new Date(date); endDate.setMonth(endDate.getMonth()+1); //取得終了日 var myEvents=myCal.getEvents(startDate,endDate); //カレンダーのイベントを取得 /* イベントの数だけ繰り返してシートに記録 */ for each(var evt in myEvents){ Logger.log(evt.getLocation()); Logger.log(evt.getDescription()); mySheet.appendRow( [ no, //No evt.getTitle(), //イベントタイトル evt.getStartTime(), //イベントの開始時刻 evt.getEndTime(), //イベントの終了時刻 evt.getLocation(), //場所 evt.getDescription(), //説明 "=INDIRECT(\"RC[-3]\",FALSE)-INDIRECT(\"RC[-4]\",FALSE)" //所要時間を計算 ] ); no++; } }
実行結果
このスクリプトを実行してみますと
E列に場所、F列に説明が出力されていますね。
まとめ
Google App ScriptでGoogleカレンダーイベントの場所、説明を取得する方法でした。
メソッドさえ使えれば簡単ですね。
このように、Googleカレンダーからは、イベントのタイトル、開始終了時間以外にも、場所、説明といった項目が活用できますので、運用次第では色々な利用方法が考えられますよね。
ぜひご活用くださいね!