12
20

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.

GASを使ってGoogleカレンダーの予定をスプレッドシートに取り込む

Last updated at Posted at 2019-02-20

今回はタイトル通り、
GASを使ってGoogleカレンダーの予定をスプレッドシートに取り込む方法を紹介します!

以下様々なGASの記事を紹介してます!
https://bzbot.work/

紹介記事

今回紹介している記事は以下です!
https://bzbot.work/2019/02/20/gas-calendar/

GAS
function getCal() {
  
  //カレンダーIDを指定して、カレンダーを取得
  var calendar = CalendarApp.getCalendarById('********************');

  //対象の日付を範囲指定
  var date = '2019/01/01'; 
  //この時はまだfrom,end両方に変数dateで指定した日付が入っている
  var from= new Date(date);
  var end = new Date(date);
  //月を指定するときは必ず大文字のMMを指定します(半角mmだとminutesを指してしまう)
  Logger.log('from:' + Utilities.formatDate( from, 'Asia/Tokyo', 'yyyy-MM-dd'));
  Logger.log('end:' + Utilities.formatDate( end, 'Asia/Tokyo', 'yyyy-MM-dd'));


  //endのMonthm(月)に+1をして翌月を指定
  end.setMonth(end.getMonth()+1);
  Logger.log('== setMonth、getMonthでendに+1ヶ月後 =====');
  Logger.log('from:' + Utilities.formatDate( from, 'Asia/Tokyo', 'yyyy-MM-dd'));
  Logger.log('end:' + Utilities.formatDate( end, 'Asia/Tokyo', 'yyyy-MM-dd'));
  
  //getEventsで取得したいカレンダーの始まりと終わりを指定して引数にセット
  var events = calendar.getEvents(from, end);


  //アクティブなシートを取得
  var sheet = SpreadsheetApp.getActiveSheet();

  //ヘッダ行に入る値を指定(誤って削除しても都度指定)
  sheet.getRange('A'+(1)).setValue('タイトル');
  sheet.getRange('B'+(1)).setValue('開始時刻');
  sheet.getRange('C'+(1)).setValue('終了時刻');
  sheet.getRange('D'+(1)).setValue('所要時間');
  sheet.getRange('E'+(1)).setValue('詳細');
  sheet.getRange('F'+(1)).setValue('住所');

  //eventsに入っている要素の数だけ実行
  for (var i = 0; i < events.length; i++) {
    var title = events[i].getTitle();
    var startTime = events[i].getStartTime();
    var endTime = events[i].getEndTime();
    var duration = (endTime - startTime) /(1000*60)/(60);
    var detail = events[i].getDescription();
    var location = events[i].getLocation();

    //取得した値をスプレッドシートに反映
    sheet.getRange('A'+(i+2)).setValue(title);
    sheet.getRange('B'+(i+2)).setValue(startTime).setNumberFormat('yyyy/mm/dd hh:mm');
    sheet.getRange('C'+(i+2)).setValue(endTime).setNumberFormat('yyyy/mm/dd hh:mm');
    sheet.getRange('D'+(i+2)).setValue(duration);
    //sheet.getRange('E'+(i+2)).setValue(detail);
    sheet.getRange('F'+(i+2)).setValue(location);
  }
}

まずはじめにカレンダーIDを取得します。

GAS
var calendar = CalendarApp.getCalendarById('********************');

取得方法は以下部分から可能です。

図1

image.png

図2

image.png

12
20
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
12
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?