こんにちは!NexSeedエンジニア講師をしております。一戸です。えりてぃと呼ばれています。
今回はGAS(Google apps scriptの略、通称ガス)を使ってどういうことができるかを具体的に紹介するため、実際に使っているGoogleカレンダーから予定をGoogleスプレッドシートに抜き出し、各タスクに使用している所要時間を割り出す方法を説明したいと思います。
Javascriptをベースにした言語であるため、今回はGoogle Apps独自の関数を使っている部分にフォーカスした説明となります。
GAS(Google apps script)が実際に使えるシチュエーション例
<仮想背景>
なぜだかいつも時間に追われてる気がしてならない語学学校NのTeacherえりてぃ。
いつも何に時間を使っているのか、記憶力も極端に乏しいため覚えていない。記憶力がないためGoogleカレンダーにはしっかりタスクを記録はしているけどどのタスクに何時間使っているのかカレンダーを見ながらスプレッドシートに手入力は面倒…。
こういうひと、よく居ると思うんですよね。まさしく私がそうです。自分自身以外でもマネジメントをされている方は自分のメンバーが時間を有効活用できてるかは気になる所。
こんな時、GASが救世主となってくれます!
<前提>
対象:2017年9月のスケジュール
取得先:えりてぃのカレンダー
出力先:今回用意したGoogle Spreadシート
実際試してみたい場合はタスクを取得したいカレンダーを用意し、新しいGoogle Spreadシートを一つ作っておきましょう。
では、はじめて行きましょう。
1. 用意したGoogle Spreadシートからスクリプトエディタを開きます
2.開いたスクリプトエディタに名前をつけておきます。ここにGASを書いていきます
今回やりたいことはスケジュールを管理するのに便利なGoogleカレンダーのイベントをスプレッドシートに取得し、リスト化することで一気に時間計算をするということです。
Googleカレンダーのイベントとは下の図のようにカレンダーを表示した際の四角い水色の単位です。
3.関数の形でGASを書いていきます。
4.書き込むためのスプレッドシートを操作するための変数を用意します。変数名はmySheetとしておきます。
5.読み込みたいカレンダーのカレンダーIDを指定します
今回は仮のカレンダーID、erity@addressoshienai.netを指定しています。
以下、カレンダーIDの探し方です。
読み込みたいカレンダーを開き、その横の▼をクリック、設定を選択します
開くと、使用できるカレンダーのリンクが表示されるのでクリック
カレンダーの詳細を見ることができる画面が表示されます。その中央あたりにカレンダーIDが表示されているので、GASで指定します
6.取得したい期間を指定し、カレンダー情報を取得します
変数startDate,endDateに取得したい範囲の開始日と終了日をそれぞれ指定します。
このプログラムだと
startDate = ‘2017/09/01 00:00:00’;
endDate = ‘2017/10/01 00:00:00’;
が設定されています。
一見、10月1日の分も取得できそうですが、0時が指定されているため、前日までとうまく指定できています。
7.取得したカレンダー情報を、スプレッドシートに書き込みます
6までの段階で、myEventsという変数にはたくさんのイベント情報が取得されているため、for文で1件ずつ取得し、evtという変数に1件分のイベントを格納しています。
その後、mySheet.appendRowという関数を使用し、取得できた情報をmySheetに書き込んでいます。
こちらが記載したコードのすべてになります。
/* 指定月のカレンダーからイベントを取得する */ function getCalendar() { var mySheet=SpreadsheetApp.getActiveSheet(); //アクティブなシートを取得 var myCalendar=CalendarApp.getCalendarById('erity@addressoshienai.net'); //特定のIDのカレンダーを取得
var date='2017/09/01 00:00:00'; //月指定(取得したい月の初日) var startDate=new Date(date); //取得開始日 var endDate=new Date(date); endDate.setMonth(endDate.getMonth()+1); //取得終了日
var myEvents=myCalendar.getEvents(startDate,endDate); //指定した範囲のカレンダーのイベントを取得
var no=1; //イベントに振るNo
/* イベントの数だけ繰り返してシートに記録 */ for each(var evt in myEvents){ mySheet.appendRow( [ no, //No evt.getTitle(), //イベントタイトル evt.getStartTime(), //イベントの開始時刻 evt.getEndTime(), //イベントの終了時刻 "=INDIRECT(\"RC[-1]\",FALSE)-INDIRECT(\"RC[-2]\",FALSE)" //所要時間を計算 ] ); no++; }
}
出来上がったコードを実行するには「▶」マークの実行ボタンを押します
実行するとスプレッドシートにイベントがリストアップされていきます
ちょっと見づらいので整形するとこんな感じです。(こちらはGoogleスプレッドシートの使い方になるので今回は割愛します)
6時間行ってます。すぐに見える化ができていますね。
まとめ
いかがでしたでしょうか。
是非今回の記事でGASについて理解していただき、役立てていただけますと幸いです。
NexSeedでは、プログラミングと英語を学べる「エンジニア留学」を提供しています。 プログラミングと英語、エンジニア/ IT留学に興味がある方は以下からチェック!
Related Posts
投稿者プロフィール
- ニュージーランド・オーストラリアを経てセブ島にやってきた、世界を飛び回るベテラン女性エンジニア。インターネット創世期よりWebサイト製作を経験。小売業販促アイテム印刷システム「ipopweb」の立ち上げに企画時から参画し、DB 設計・プログラミング 開発を担当しリリース。業務システムエンハンスやポータルサイトのリニューアル開発、運営、保守も多数手がける。OracleMaster保持者。PHP、JavaScriptを始め15以上の言語使用経験を持つ。茨城大学工学部システム工学科卒。
最新の投稿
- 英語学習2019.08.29英語の文章をスラスラ読むコツ3選!TOEICでいつも時間切れになる人必見
- IT留学2018.11.09海外で英語も指導力も上達!エンジニア講師大募集
- IT留学2018.04.20プログラミング初心者にMacをおすすめする10の理由
- IT留学2017.11.03フリーランスエンジニアのタイプと働き方を現役エンジニアが解説!