【Google Apps Script】工数管理が簡単に!GASで1週間の作業工数を計算する
目次
経緯
私が所属している部署では、Googleカレンダーに予定を入れてタスクの管理をしています。 私は、月末になると、Googleカレンダーを元に、1ヵ月分の作業時間をまとめた書類の作成をしています。その時に作成した書類に記載されている作業時間と、Googleカレンダーの作業実績にずれが生じることがありました。そこで、GASを使ってGoogleカレンダーから正確な作業時間を抽出し、書類の作成に役立てることができないかと考え、簡単なスクリプトを作成することにしました。
GASとは?
Google Apps Scriptの略でGoogleが提供しているプログラミング言語のことです。
GASはGoogleのアカウントを持っていれば、誰でも利用することができます。
GASの最大の特徴は、Googleが提供するサービスをクラウド上で、スクリプトを実行することで、操作できることです。
GASを使ってやりたいこと
Googleカレンダーの12月2日~12月8日の予定から、何の作業にどれだけの時間がかかったのかを、スプレッドシートに出力したい。
GASを使って作業時間算出スクリプトを作ってみた
まずは下記のスプレッドシートを用意します。
次に下記のサイトを参考にし、次のようなプログラムを作成しました。
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】はじめてのスクリプトを作成し、保存し、実行する
アジアクエスト株式会社では一緒に働いていただける方を募集しています。
興味のある方は以下のURLを御覧ください。