20
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【初心者向け】Googleカレンダーからスプレッドシートへ出力・合計し、時間の可視化をする(GAS、関数)

Last updated at Posted at 2021-01-30

#1.はじめに
Googleカレンダーで予定の管理をしている方は多いのではないでしょうか。

Google Apps Script(GAS)と関数の合わせ技により、
Googleカレンダーから、タイトルが同じまたは同じワードが入っているものの合計時間を簡単に出すことができます!

自分が何に時間をかけていたか、カレンダーとにらめっこすることなく数分で出すことができます!
本当に便利で準備も簡単なので、ぜひやってみてください!

それでは説明していきます!

#2.使うもの
・Googleカレンダー
・Googleスプレッドシート

#3.Googleカレンダーからスプレッドシートへの出力
##3-1.GoogleカレンダーのIDを確認
今回は仮に、「テスト」というカレンダーから出力していきます。
スクリーンショット 2021-01-30 16.02.53.png

この「テスト」の設定と共有から、カレンダーの設定の画面に移動して、
カレンダーの統合のところにある、カレンダーIDをメモします。
aabbcc@abcd.com
みたいな形式のはずです。

##3-2.Googleスプレッドシートを用意
新しくスプレッドシートを作り、
Googleスプレッドシートからスクリプトエディタを開きます。
スクリーンショット 2021-01-30 16.10.19.png

##3-3.スクリプト
スクリプトエディタに書く内容は以下。

GAS
function callender() {
//1 スプレッドシートを読み込む
  const sp = SpreadsheetApp.getActiveSpreadsheet();
  const sh1 = sp.getSheetByName('シート1');

//2 カレンダーをIDで読み込む
  const cal=CalendarApp.getCalendarById('ここに先ほどのカレンダーIDを入れる!'); 

//3 カレンダーのイベントの期間を指定
  const startTime = new Date('2021/01/01 00:00:00');
  const endTime = new Date('2021/02/01 00:00:00');
  const event = cal.getEvents(startTime,endTime); 

//4 イベントをスプレッドシートへ書き出す
  for(var i=1;i<event.length+1; i++){
    sh1.getRange('a'+i).setValue(event[i-1].getTitle());//イベントタイトル
    sh1.getRange('b'+i).setValue(event[i-1].getStartTime());//イベント開始時刻  
    sh1.getRange('c'+i).setValue(event[i-1].getEndTime());//イベント終了時刻
    sh1.getRange('d'+i).setValue("=round((rc[-1]-rc[-2])*24)");//所要時間  
  }
}

シート1のところは、出力したいシート名に合わせて。
ここに先ほどのカレンダーIDを入れる!には、メモしてあるカレンダーIDを入れてください。
出力したい期間も今回は2021年の1月にしていますが、適宜変えてください!

こんな感じになっているはず。
スクリーンショット 2021-01-30 16.18.06.png

##3-4.実行
実行を押します。
承認が必要です。と出ると思いますが、順に進んでアクセスを許可してください。

スクリーンショット 2021-01-30 16.21.53.png
シート1にスケジュールがずらっと出力されました。

#4.合計時間の算出
ここから、タイトルごとの時間を出していきます。
##4-1.シート2を作成
まず、新しいシートを追加してください。
##4-2.タイトルと関数を入れる
今回は、「授業」「課題」「バイト」「遊び」の時間をそれぞれ合計したいので、
シート2のA列にタイトルを入力します。

そしてB1に入れる関数がこちら。
=SUMIF('シート1'!$A$1:$D,A1,'シート1'!$D$1:$D)

シート1を参照して、シート2のA1の値と一致した行のD列の値を足し算します。
数式で表示するとこうなります。
スクリーンショット 2021-01-30 17.16.11.png

シート2に、合計時間が表示されました。
スクリーンショット 2021-01-30 17.17.23.png

#5.まとめ
以上より、あっという間に時間の可視化ができたと思います。
部分一致で検索したり、時間表示を分表示にしたりと、
使い方はいろいろあると思いますので、ぜひやってみてください!!

20
29
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?