#やりたいこと
Googleスプレッドシートにて作成した日別のスケジュールをGoogle Calendarへイベント追加するスクリプトを組みました。
javascriptは触り始めたばかりなのですが、時間を扱っている部分がどうにも冗長だなと思っています。この辺りの簡素な書き方があれば教えて頂けたら嬉しいです。
実装したのはスプレッドシートで当日のスケジュールを立ててそれを指定のカレンダーに転記するという内容です。
表は
開始時間 | 終了時間 | Todo |
---|---|---|
9:00 | 9:30 | text |
このような表が続くイメージです。
流れとしては
- new Date()で当日の日付等の情報を取得し、それぞれtYやtMなどの西暦や月に分ける。
- スプレッドシートの9:00 ~ 9:30などの部分の時間と分をsHやeMなどの変数に代入。(getValue()で抜き出すと1899年などになってしまった為、getHours()で数字だけ抜いてます)
- new Date()から取得したtYや、スプレッドシートから取得したsHを元にイベントの日時情報を構成しカレンダーにイベントを作成する
function myFunction() { var title, description; var sH,sM,eH,eM; var today = new Date(); var tY = today.getFullYear(); var tM = today.getMonth(); var tD = today.getDate(); var sheet = SpreadsheetApp.getActiveSheet(); var objCalendar = CalendarApp.getCalendarById('カレンダーID'); for (var i = 2; i <= sheet.getLastRow(); i++) { if (sheet.getRange(i, 3).getValue() != ""){ title = sheet.getRange(i, 6).getValue(); sH = sheet.getRange(i, 1).getValue().getHours(); sM = sheet.getRange(i, 1).getValue().getMinutes(); eH = sheet.getRange(i, 2).getValue().getHours(); eM = sheet.getRange(i, 2).getValue().getMinutes(); description = sheet.getRange(i, 4).getValue(); objCalendar.createEvent(title, new Date( tY, tM, tD , sH, sM ), new Date( tY, tM, tD , eH, eM ), {description:description}); } } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/31 04:40
2017/01/31 04:56 編集