Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに出力する

★気に入ったらシェアをお願いします!


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

引き続きGoogleカレンダーの記録を活用して過去の仕事の生産性を測定する方法を進めていきます。

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

Google Apps Scriptで特定月のカレンダーのイベント情報を取得する
Googleカレンダーの記録を活用して過去の仕事の生産性を測定するしていきます。今回はGoogle Apps Scriptで特定の月のカレンダーのイベント情報を取得する方法についてお伝えします。

Googleカレンダーの特定の月のイベントをGoogle Apps Scriptに取り込むことができました。

今回は、出力先をスプレッドシートにに切り替えて集計を進めていきます。

スポンサーリンク

前回のおさらい

前回のスクリプトはこちらでした。

スクリプトの流れとしては

  1. カレンダーIDを指定してカレンダーを取得
  2. 取得する期間の開始日と終了日を算出
  3. カレンダーのイベントを取得
  4. 取得したイベント情報をログ出力

という流れでした。

今回のお題:出力先をスプレッドシートに変更

今回は出力先をスプレッドシートにしたいと思います。

ですから、新規のスプレッドシート「Summary of Working」を作成して、そのメニューから「ツール」→「スクリプトエディタ」を呼び出して、そこにスクリプトを書いていきます。

その上で上記プログラムについて

  • 冒頭でスプレッドシートの準備を行う
  • 17~22行目のログ出力の代わりにスプレッドシートのセルを指定
  • イベントごとの所要時間の計算を実行し出力する

という修正を加えていきます。

目指す流れとしては

  1. スプレッドシートのシートと最終行を取得
  2. カレンダーIDによりカレンダーを取得
  3. 取得する期間の開始日と終了日を算出
  4. カレンダーのイベントを取得
  5. 各イベントごとにスプレッドシートに書き出す
    1. イベントのタイトル、開始時刻、終了時刻を書き出す
    2. 所要時刻の計算式を書き出す

となります。

では、以降で解説をしていきますね。

カレンダーの特定の月のイベントをスプレッドシートに出力する

スプレッドシートを取得

まずスプレッドシートの準備ですが、スクリプトを記述しているスプレッドシートのアクティブなシートを取得します。

とします。

スプレッドシートにイベントの情報を出力する

for eachループの中、スプレッドシートにイベント情報を出力する箇所ですが17~22行目の代わりに

とします。

appendRowメソッドでシートの最終行にイベント情報を記録していきます。

A列から順番に、No、タイトル、開始時刻、終了時刻、所要時間の数式と入力されます。

所要時間の計算ですが、終了時刻から開始時刻を減算をすればOKです。この場合、指定するセルは相対参照ですからR1C1形式にすべくINDIRECT関数を使っています。

appendRowメソッド、INDIRECT関数については以下記事もご参考くださいね。

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

スプレッドシートへの出力を実行

以上をまとめると、スクリプトはこちらになります。

こちらを実行してみると

Googleカレンダーのイベントをスプレッドシートに出力

となります。

んー、ちょっとパッと見では見づらいですね。

スプレッドシートのセルの表示形式を変更する

C列からE列までの表記が見づらいので、表示形式を変更します。

まずC,D列に関しては秒の単位は不要ですので削除をしていきます。

C,D列を選択した状態でスプレッドシートのメニューから「表示形式」→「数字」→「表示形式の詳細設定」→「その他に日付と時刻の形式」を選択します。

「秒」はクリックするとメニューが表示されますので「削除」を選択。コロンは普通に delete キーで削除して「適用」です。

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

次にE列ですがこちらは経過時間の表示にしたいので、メニューから「表示形式」→「数字」→「経過時間」です。秒の表記も邪魔であれば、C,D列の表示形式の変更と同様に秒とコロンを削除してください。

結果としてこのような表示になります。

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

見やすくなりましたね。

まとめ

当ブログをたくさんご覧いただいている皆さまにはおさらい的な内容でしたが、これにてGoogleカレンダーの特定の月のイベントをスプレッドシートに出力することができました。

また、スプレッドシートのセルの表示形式の設定により見やすくなりました。

次回ですが、これらのイベント一覧を種類別に集計をしていきたいと思います。

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

どうぞお楽しみに!

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

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

コメント

  1. 稲坂 より:

    はじめまして!
    Googleカレンダーを利用しており、過去のまとめを
    したいと考えてこのページに来ました。

    ”Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに出力する ”
    のページを参考に、作成してみましたが、簡単に記録を出力でき
    非常に助かりました!! 
    ありがとうございます。

    そこで、2点ご教示いただきたいのですが、
    ①カレンダーの”場所”・説明 も一緒に取得・出力したい
    ②カレンダーを複数(仕事・家族)アカウント内で持っているが、出力したい
     (カレンダー名が(仕事・家族)スプレッドシートに出力されると嬉しいです。)
    の①②をご教示いただけませんか?

    勝手なお願いですが、ご教示いただけますと助かります。

    • 稲坂様

      コメントありがとうございます!
      いずれもニーズがありそうですね…
      今すぐというわけではありませんが、記事としてまとめてみたいと思います。
      それまでお待ちいただければ幸いです。