読者です 読者をやめる 読者になる 読者になる

さらばださくらば

週に1回、Pocketした記事をシェアします。

GASをつかってGoogleカレンダーの予定を取得し、Googleスプレッドシートに記載する

共通のまえがき

  • 自分向けのメモなので、コードを記載して何か起きても責任は取りませんm(. .)m

GASをつかってGoogleカレンダーの予定を取得し、Googleスプレッドシートに記載する

今回作りたいのは、GASをつかって、カレンダーの予定をスプレッドシートに書き込むもの

こうやってGoogleカレンダーの予定を取得し…

function Calendar() {
  var cal = CalendarApp.getCalendarById('XXXXXXXXXXXX');//カレンダーIDを指定
  var events = cal.getEventsForDay(new Date('2017/05/09')); //対象の日付を指定
  var ss = SpreadsheetApp.getActiveSheet();//アクティブなシートを指定
 
  for // forで繰り返し
    (var i=0; i<events.length; i++){//繰り返す回数は予定の個数分
      ss.getRange('A'+(i+1)).setValue(events[i].getTitle());//A1に代入 予定のタイトル 代入したらiに1を足す
  }
}



こんな風にスプレッドシートに書き込むスクリプト

開始時刻や終了時刻、場所は今回取り扱わない。シンプルに名前だけ。

f:id:kaito87:20170510021611p:plain

※実際に取得できたものを書き換えてます

Googleカレンダーから取得する

  • functionの名前は任意

    • とりあえず、"Calendar"としておく
  • どこのカレンダーから予定を取得するのか問題

    • カレンダーIDをつかって、予定を取ってくるカレンダーを指定する
    • 指定するためには、getCalendarByIdメソッドを使う
  • 次は取得する日時を指定しなくてはならない。

    • getEvents と getEventsForDay の2種類
    • getEventsメソッドでは、日付範囲を指定できる。
    • 特定の日付のイベントだけを取得するgetEventsForDayメソッド
//getEventsForDayをつかう場合

function Calendar() {
  var cal = CalendarApp.getCalendarById('XXXXXXXXXXXX');//カレンダーIDを指定
  var events = cal.getEventsForDay(new Date('2017/05/09')); //対象の日付を指定
}

スプレッドシートに書き込む

  • スプレッドシートでアクティブシートに書き出すことにする。

    • getActiveSheetメソッド
    • SpreadsheetApp.getActiveSheet()と記載すると、アクティブシートを指定できる。
  • For文と、いくつかのメソッドを使って予定を書き込む

    • lengthメソッドで、指定した日付に予定がいくつあるか、数えることができる
    • getRangeメソッドで、書き込むセルの位置を指定できる
      • getRange(1,1)とgetRange(‘A1'は同じ
      • getRange(‘A1’+1)は、getRange(‘A2’)と同じ
    • setValueでセルに値を代入
    • getTitleは、予定のタイトルを取得するもの