前提
【GAS】スプレッドシートからカレンダーへ予定登録で今まで なんの問題なく動いていたのですが、トリガーの時間を5分から1分に変えてから、このエラーになり。 その後5分に戻しましたが、エラーのままになってしまいました。
実現したいこと
エラーとなっている calendar.createEvent 命令を正しくしたい。
発生している問題・エラーメッセージ
この命令で エラーになっている10:46:39 情報 TypeError: Cannot read properties of null (reading 'createEvent') G翻訳で:TypeError: null のプロパティを読み取れません (「createEvent」を読み取っています)
/** * Googleカレンダーに予定を追加する */ function CreateSchedule() { // 読み取り範囲(表の始まり行と終わり列) const topRow = 2 const lastCol = 9 const statusCellCol = 1 const mainNUM = 1 // 予定の一覧バッファ内の列(0始まり) const statusNum = 0 const dayNum = 3 const startNum = 4 const endNum = 5 const titleNum = 2 const guestNum = 6 const descriptionNum = 7 const locationNum = 8 // シートを取得 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet() // 予定の最終行を取得 let lastRow = sheet.getLastRow() //予定の一覧をバッファに取得 const contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues() //順に予定を作成 for (let i = 0; i <= lastRow - topRow; i++) { // googleカレンダーの取得 let main = contents[i][mainNUM] const calendar = CalendarApp.getCalendarById(main) //「済」の場合は無視する if (contents[i][statusNum] === "済") { continue } // 値をセット 日時はフォーマットして保持 let day = contents[i][dayNum] let startTime = contents[i][startNum] let endTime = contents[i][endNum] let title = contents[i][titleNum] // 場所と詳細をセット let options = { guests: contents[i][guestNum],description: contents[i][descriptionNum],location: contents[i][locationNum]} console.log(day + " " + contents[i][titleNum]) try { // 開始終了時刻が無ければ終日で設定 if (startTime == '' || endTime == '') { //予定を作成 calendar.createAllDayEvent( title, day, options ) // 開始終了時刻があれば範囲で設定 } else { // 開始日時を作成 let startDate = new Date(day) startDate.setHours(startTime.getHours()) startDate.setMinutes(startTime.getMinutes()) // 終了日時を作成 let endDate = new Date(day) endDate.setHours(endTime.getHours()) endDate.setMinutes(endTime.getMinutes()) // 予定を作成 calendar.createEvent( title, startDate, endDate, options ) } //予定が作成されたら「済」にする sheet.getRange(topRow + i, statusCellCol).setValue("済") // エラーの場合ログ出力する } catch (e) { Logger.log(e) } } } ```ここに言語名を入力 ソースコード
試したこと
① ググって同じ情報が無いか?調べたが 無かった。
② トリガーの時間を変えてみたが同じ
③ デバッグ機能を使って 調べたが 必要な情報は連携されていた。
補足情報(FW/ツールのバージョンなど)
詳しいデバック情報を添付します。
よろしくお願いいたします。リンク内容
その後 デバッグで const calendar = CalendarApp.getCalendarById(main)
そもそも いままで取得で来ていた カレンダーIDを使っているのに この命令で NULL
が帰ってきているようです。
回答1件