半期の授業をGoogleカレンダーに一括登録できるScriptを作ってみた

GAS

私の通う大学も、いよいよ、後期の授業が始まりました!

大学のコマを私は、Googleカレンダーで管理しています。

以前は、十数コマある授業を手入力で入力していました。ところが、この作業ものすごくめんどくさいし、時間がかかっていました。

まず授業コマの時間を指定し、授業名と教室名を入力。さらにそれを、授業が終わるまで伸ばす・・・ とまあかなり大変で、1時間半くらいかかっていました。

そこでお馴染み、GAS(GoogleAppsScript)の出番! これを使えば、めんどくさい作業も、ものの5分で済むようになりました。偉大ですね。

機能

機能としては、

  • 時間の決まっている(1コマ:8:50〜9:30など)イベントを登録できる
  • 「①授業名」というタイトルで登録できる(「①電磁気学」など)
  • 授業教室を場所として登録できる
  • 曜日ごとの繰り返しを登録でき、終了時間も指定できる

そして何より、

  • スプレッドシートに時間割形式で入力すれば月〜金まで一括で登録できる

というのが売りポイントです!

仕組み

Googleスプレッドシートの決まったセルに決まった項目を入力し、これをGASで扱うことにより実現しています。

以下の画像を参考に、スプレッドシートを作成してください。

コード

今回はGoogleスプレッドシートを用います。こちらを参考に新しいGASプロジェクトを立ち上げてください!

実際に使用するコードはこんな感じです。

function registerAll(){
for(j=0;j<=4;j++){
myFunction(j)
}
}

function myFunction(k) {
  var dayarr = ["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY"]
  var theday = dayarr[k]
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sss = ss.getSheetByName('シート1')
  var data = sss.getDataRange().getValues()
 var cal = CalendarApp.getCalendarById('gg0crrg1****************@group.calendar.google.com');
 for(var i=2;i<7;i++){
 if(data[i][k+3]==="NONE"){
 }else{
   var strTime = new Date(data[0][k+3]).setHours(new Date(data[i][1]).getHours())
   strTime = new Date(strTime).setMinutes(new Date(data[i][1]).getMinutes())
   strTime = new Date(strTime)
   
   
   var endTime = new Date(data[0][k+3]).setHours(new Date(data[i][2]).getHours())
   endTime = new Date(endTime).setMinutes(new Date(data[i][2]).getMinutes())
   endTime = new Date(endTime)
   
   var until =  new Date(data[1][k+3]).setHours(new Date(data[i][2]).getHours())
   until = new Date(until).setMinutes(new Date(data[i][2]).getMinutes())
   until = new Date(until)
   
   //Logger.log(until)
    var eventSeries = cal.createEventSeries(data[i][0]+data[i][k+3],
    strTime,
    endTime,
    CalendarApp.newRecurrence().addWeeklyRule()
        .onlyOnWeekdays([CalendarApp.Weekday[theday], CalendarApp.Weekday[theday]])
        .until(until),
    {location: data[i+6][k+3]});
    }
    //Logger.log(eventSeries.getId())
 }
 
}

このコードをコピーペーストしてください。

var cal = CalendarApp.getCalendarById('gg0crrg1**@group.calendar.google.com');には、あなたのGoogleカレンダーのカレンダーIDを入力します!

registerAll()を実行すれば、Googleカレンダーにあなたの時間割が反映されます!

タイトルとURLをコピーしました