スプレッドシートからカレンダーへの連携がうまくいきません

実現したいこと

勤務シフト表が紙ベースで配布されるため、スプレッドシートを介してGoogleカレンダーに入力したいと考えております。
イメージ説明

前提

日付セルは年月日を保持しており、表示形式で日付のみにしています。
スプレッドシート上でプルダウンよりシフトを選択すると、タイトル、開始・終了時刻は正確に表示されます(この場合は早番)。

javascript

1Browser.msgBox(title);2// → 早番3Browser.msgBox(stTime);4// → Wed Feb 01 2023 07:00:00 GMT+0900 (日本標準時)5Browser.msgBox(edTime);6// → Wed Feb 01 2023 16:00:00 GMT+0900 (日本標準時)

カレンダーIDに間違いはなくcalendar.createEvent()の引数に日付を直打ちすると正しくカレンダーに反映されます。
ですが、変数の状態ではカレンダーに反映されません。
どうかお力をお貸しください。

// Utilities.formatDate なども試してみましたが、これはString型と思われるので見当違いですね。
// IDはConstにすると動かなかったのでletで宣言しています。

該当のソースコード

javascript

1function onEdit(e) {2 let mySheet = SpreadsheetApp.getActiveSheet();3 let myActiveCell = mySheet.getActiveCell();4 5 // シフト入力(早番のみ記載しています)6 let myDay = myActiveCell.offset(-1,0).getValue(); // 日付7 let shift = myActiveCell.getValue(); // シフト8 let year = myDay.getFullYear(); // 年9 let month = myDay.getMonth(); // 月10 let day = myDay.getDate(); // 日11 12 // 早番(7:00-16:00)13 if(shift == "早番"){14 let title = "早番";15 Browser.msgBox(title);16 17 // 開始日時18 let stTime = new Date(year, month, day, 7, 0, 0);19 // stTime = Utilities.formatDate(stTime, 'JST', 'yyyy/MM/dd HH:mm:ss');20 Browser.msgBox(stTime);21 22 // 終了日時23 let edTime = new Date(year, month, day, 16, 0, 0);24 // edTime = Utilities.formatDate(edTime, 'JST', 'yyyy/MM/dd HH:mm:ss');25 Browser.msgBox(edTime);26 27 // カレンダーへ追加28 let ID ="family********************@group.calendar.google.com";29 let calendar = CalendarApp.getCalendarById(ID);30 calendar.createEvent(title, stTime, edTime); // ここがうまくいきません31 Browser.msgBox("完了");32 }

コメントを投稿

0 コメント