私の通う大学も、いよいよ、後期の授業が始まりました!
大学のコマを私は、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カレンダーにあなたの時間割が反映されます!