この記事はCPS Lab Advent Calendarの10日目です。
僕達の研究室では毎週ミーティングの度にGoogle Documentで議事録を取っています。しかし、毎回その日の議事録をテンプレートから生成している手間や、ミーティングの度にDocumentとは別にカレンダーを開いて予定を確認する手間が鬱陶しくなってきました。
そこで今回は議事録改善の第一歩としてカレンダーのイベント情報を取得し、Google Documentで表示できるようにしてみました。以下がその方法です。
Google Apps Scriptを開く
Google Documentで空白のDocumentを作成し、[ツール]から[スクリプトエディタ]を選択します。
Google CalendarのIDを取得する
Google CalendarのIDはマイカレンダーに表示してあるカレンダーの設定から取得することができます。設定を開くとカレンダーIDが表示してある部分があるのでそのIDをコピーして控えておきます。
ちなみに今回登録している予定は上の画像のとおりです。(予定は架空のものです)
Google App Scriptにコードを記述する
function getCalendar(){
var body = DocumentApp.getActiveDocument().getBody();
var calendar = CalendarApp.getCalendarById("your Calendar ID");
var now = new Date();
var twoWeeksFromNow = new Date(now.getYear(), now.getMonth(), now.getDate() + 14);
var event = calendar.getEvents(now, twoWeeksFromNow);
var day = ["日", "月", "火", "水", "木", "金", "土"]
body.appendListItem("スケジュールリスト").setGlyphType(DocumentApp.GlyphType.HOLLOW_BULLET);
for(var i = 0; i < event.length; i++){
var time = event[i].getStartTime();
body.appendListItem(time.getMonth() + "/" + time.getDate() + "("+day[time.getDay()] +")" + " " + event[i].getTitle()).setNestingLevel(1).setIndentStart(72)
.setGlyphType(DocumentApp.GlyphType.HOLLOW_BULLET);
}
}
CalendarAppクラスのgetCalendarByIdメソッドの括弧内に先程取得したCalendar IDを貼り付けることでカレンダーの情報を取得することができます。上記のコードでは現在の日付から2週間後までの予定を取得してリスト形式で表示させています。
関数を実行する
コード記入欄の上部にある[関数を選択]を押し、getCalendarメソッドを選択する。その後、実行ボタン(▷)を押して実行する。
出力結果
実行すると承認を許可するか聞かれるので[許可を確認]ボタンを押すとDocumentにこのように出力される。
(※承認時に「このアプリは確認されていません」と表示される場合は、そのメッセージの下の詳細から「(プロジェクト名)に移動」というリンクをたどって承認を許可する)
最後に
研究室の議事録にはまだこのカレンダーのスクリプトは導入していないですが、近々導入する予定です。カレンダーの他にも名簿のGoogle SpreadSheetからメンバーの名前を取ってきたり、毎週議事録を自動生成してslackに通知飛ばしたりと拡張していこうと思ってます。(コードの書き方等ツッコミがある方は気兼ねなくツッコんでください)