#1.はじめに
Googleカレンダーで予定の管理をしている方は多いのではないでしょうか。
Google Apps Script(GAS)と関数の合わせ技により、
Googleカレンダーから、タイトルが同じまたは同じワードが入っているものの合計時間を簡単に出すことができます!
自分が何に時間をかけていたか、カレンダーとにらめっこすることなく数分で出すことができます!
本当に便利で準備も簡単なので、ぜひやってみてください!
それでは説明していきます!
#2.使うもの
・Googleカレンダー
・Googleスプレッドシート
#3.Googleカレンダーからスプレッドシートへの出力
##3-1.GoogleカレンダーのIDを確認
今回は仮に、「テスト」というカレンダーから出力していきます。
この「テスト」の設定と共有から、カレンダーの設定の画面に移動して、
カレンダーの統合のところにある、カレンダーIDをメモします。
aabbcc@abcd.com
みたいな形式のはずです。
##3-2.Googleスプレッドシートを用意
新しくスプレッドシートを作り、
Googleスプレッドシートからスクリプトエディタを開きます。
##3-3.スクリプト
スクリプトエディタに書く内容は以下。
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月にしていますが、適宜変えてください!
##3-4.実行
実行を押します。
承認が必要です。と出ると思いますが、順に進んでアクセスを許可してください。
#4.合計時間の算出
ここから、タイトルごとの時間を出していきます。
##4-1.シート2を作成
まず、新しいシートを追加してください。
##4-2.タイトルと関数を入れる
今回は、「授業」「課題」「バイト」「遊び」の時間をそれぞれ合計したいので、
シート2のA列にタイトルを入力します。
そしてB1に入れる関数がこちら。
=SUMIF('シート1'!$A$1:$D,A1,'シート1'!$D$1:$D)
シート1を参照して、シート2のA1の値と一致した行のD列の値を足し算します。
数式で表示するとこうなります。
#5.まとめ
以上より、あっという間に時間の可視化ができたと思います。
部分一致で検索したり、時間表示を分表示にしたりと、
使い方はいろいろあると思いますので、ぜひやってみてください!!