私が所属している部署では、Googleカレンダーに予定を入れてタスクの管理をしています。 私は、月末になると、Googleカレンダーを元に、1ヵ月分の作業時間をまとめた書類の作成をしています。その時に作成した書類に記載されている作業時間と、Googleカレンダーの作業実績にずれが生じることがありました。そこで、GASを使ってGoogleカレンダーから正確な作業時間を抽出し、書類の作成に役立てることができないかと考え、簡単なスクリプトを作成することにしました。
Google Apps Scriptの略でGoogleが提供しているプログラミング言語のことです。
GASはGoogleのアカウントを持っていれば、誰でも利用することができます。
GASの最大の特徴は、Googleが提供するサービスをクラウド上で、スクリプトを実行することで、操作できることです。
Googleカレンダーの12月2日~12月8日の予定から、何の作業にどれだけの時間がかかったのかを、スプレッドシートに出力したい。
まずは下記のスプレッドシートを用意します。
次に下記のサイトを参考にし、次のようなプログラムを作成しました。
Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに出力する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
function getCalendar ( ) {
var sheet = SpreadsheetApp . getActiveSheet ( ) ; // Ⓐ
var calendar = CalendarApp . getCalendarById ( 'ここにメールアドレスを入力' ) ; // Ⓑ
var startTime = new Date ( '2018/12/02 00:00:00' ) ; // Ⓒ
var endTime = new Date ( '2018/12/08 23:59:00' ) ; // Ⓒ
var options = {
search : "●" // Ⓓ
}
var events = calendar . getEvents ( startTime , endTime , options ) ; // Ⓔ
/* 以下Ⓕ */
for ( var i = 0 ; i < events . length ; i++ ) {
sheet . appendRow (
[
events [ i ] . getTitle ( ) ,
events [ i ] . getStartTime ( ) ,
events [ i ] . getEndTime ( ) ,
"=(INDIRECT(\"RC[-1]\",FALSE)-INDIRECT(\"RC[-2]\",FALSE))* 24"
) ;
}
}
|
Ⓐカレンダーから持ってきたデータの出力先となるスプレッドシートの取得
Ⓑメールアドレスを指定してカレンダーを取得
Ⓒ取得する期間の開始日と終了日を生成
Ⓓカレンダーから作業タイトルに●の記号を含む作業タイトルを取得
Ⓔカレンダーから作業タイトル、作業開始時間、作業完了時間を配列として取得
Ⓕ配列をループして作業タイトル、作業開始時間、作業完了時間、作業時間をスプレッドシートに出力
完成!!
下記のリンクを参考にスクリプトを実行してみました。
【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
すると下記の①、②のような結果になります。
①スプレッドシートに12月2日~12月8日の作業タイトルと作業開始時間と作業終了時間が出力される。
②スプレッドシートに12月2日~12月8日の間に何の作業にどれだけの時間がかかったのか出力される。
今回はGASを使って、作業時間算出スクリプトを作ってみました。GASを使ったスクリプトを作成するのは初めてだったため、なかなか苦戦するところもありましたが、調べながら作るのは楽しくもありました。今回作成したスクリプトを使って、書類の作成をしたところ、いつもよりも素早く、正確に書類を完成させることができました。
Google Apps ScriptでGoogleカレンダーの記録をスプレッドシートに出力する
【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する