Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2098

Google Apps ScriptでGoogleカレンダーの場所・説明を取得する方法

$
0
0
calendar-memo

photo credit: Dmitry Karyshev когда ж работать-то? via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Googleカレンダーの記録をスプレッドシートに書き出して活用する方法についてお伝えしています。

前回はこちらの記事でした。

Googleカレンダーの記録を活用してスプレッドシートに業務別のコスト計算
Googleカレンダーから出力したデータに、スプレッドシートの各種関数FIND、LEFT、SUBSTITUTE、UNIQUE、SUMIFSを駆使して、業務ごとのコストを算出をしていきたいと思います。

Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに書き出したものからコスト計算をする方法についてお伝えしてきました。

これで、ほぼ当初の目的は達成なのですが、ありがたいことに読者様からこんなご要望を頂きました。

カレンダーの場所・説明も一緒に取得・出力したい!

なるほど!確かに記録としてはあったほうが便利ですよね!

ということで、今回はGoogle Apps ScriptでGoogleカレンダーのイベントの場所と説明を取得する方法です。

では、よろしくお願いいたします!

スクリプトのおさらい

前回はスプレッドシートをあれこれいじってしまいましたので、いったんその前の状態をベースに開始したいと思います。

以下の記事のころですね。

Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに出力する
Googleカレンダーの記録を活用して仕事の生産性を測定する方法を進めています。Googleカレンダーの特定の月のイベントをスプレッドシートに出力するGoogle Apps Scriptを紹介します。

まず、シートはこちらです。

日付・時刻の表示形式を変更したスプレッドシート

この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メソッドを使います。

書き方は

Eventオブジェクト.getLocation()

です。

getDescriptionでカレンダーイベントの説明を取得する

次に、Googleカレンダーのイベントについて説明を取得しますが、その場合はgetDescriptionメソッドを使います。

書き方は

Eventオブジェクト.getDescription()

となります。簡単ですね。

所要時間の数式を修正する

24行目、R1C1形式の数式ですが、ここはイベントの終了時間から開始時間を減算して、所要時間を求める数式ですね。

2列を挿入するので、参照位置を変更する必要があります。それぞれ-2をしまして

"=INDIRECT(\"RC[-3]\",FALSE)-INDIRECT(\"RC[-4]\",FALSE)"

とします。

INDIRECT関数については以下記事もご参考くださいね。

Google Apps Scriptでチャットワークからの打刻情報をシートの最終行に追加する方法
Googleスプレッドシート上に勤怠管理集計システムを作っています。今回はGoogle Apps Scriptでチャットワークからの打刻情報をappendRowでシートの最終行に追加する方法です。

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++;
  }
}

実行結果

このスクリプトを実行してみますと

Google Apps ScriptでGoogleカレンダーの場所、説明をシートに書き出す

E列に場所、F列に説明が出力されていますね。

まとめ

Google App ScriptでGoogleカレンダーイベントの場所、説明を取得する方法でした。

メソッドさえ使えれば簡単ですね。

このように、Googleカレンダーからは、イベントのタイトル、開始終了時間以外にも、場所、説明といった項目が活用できますので、運用次第では色々な利用方法が考えられますよね。

ぜひご活用くださいね!

連載目次:Googleカレンダーの記録を活用して過去の仕事を振り返る

企業ではスプレッドシートを勤怠管理やプロジェクト進捗管理などに使っている場合も多いと思います。このシリーズでは、カレンダーとスプレッドシートを連携をさせて仕事の生産性を簡単に測定する方法についてお伝えしています。
  1. 仕事の生産性を測定して振り返るためのGoogleカレンダーの使い方
  2. Google Apps Scriptで特定月のカレンダーのイベント情報を取得する
  3. Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに出力する
  4. Googleカレンダーの記録を活用してスプレッドシートに業務別のコスト計算
  5. Google Apps ScriptでGoogleカレンダーの場所・説明を取得する方法

Viewing all articles
Browse latest Browse all 2098

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>