5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CPS LabAdvent Calendar 2017

Day 10

GASでGoogle DocumentにGoogle Calendarのイベントを表示させる

Last updated at Posted at 2017-12-09

この記事はCPS Lab Advent Calendarの10日目です。

僕達の研究室では毎週ミーティングの度にGoogle Documentで議事録を取っています。しかし、毎回その日の議事録をテンプレートから生成している手間や、ミーティングの度にDocumentとは別にカレンダーを開いて予定を確認する手間が鬱陶しくなってきました。
そこで今回は議事録改善の第一歩としてカレンダーのイベント情報を取得し、Google Documentで表示できるようにしてみました。以下がその方法です。

Google Apps Scriptを開く

doc.png
Google Documentで空白のDocumentを作成し、[ツール]から[スクリプトエディタ]を選択します。

Google CalendarのIDを取得する

cal.png
Google CalendarのIDはマイカレンダーに表示してあるカレンダーの設定から取得することができます。設定を開くとカレンダーIDが表示してある部分があるのでそのIDをコピーして控えておきます。

cal2.png

ちなみに今回登録している予定は上の画像のとおりです。(予定は架空のものです)

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にこのように出力される。
doc2.png
(※承認時に「このアプリは確認されていません」と表示される場合は、そのメッセージの下の詳細から「(プロジェクト名)に移動」というリンクをたどって承認を許可する)

最後に

研究室の議事録にはまだこのカレンダーのスクリプトは導入していないですが、近々導入する予定です。カレンダーの他にも名簿のGoogle SpreadSheetからメンバーの名前を取ってきたり、毎週議事録を自動生成してslackに通知飛ばしたりと拡張していこうと思ってます。(コードの書き方等ツッコミがある方は気兼ねなくツッコんでください)

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?