前提・実現したいこと
【追記】ログを見たところ要因のヒントがありましたので、キャプチャを追加しました。
ノンプログラマで業務効率化や自動ツール実装のためGASを始めたばかりです。
GASでスプレッドシートの情報から予定を一括で自動登録するシステムを作っています。
トライアル段階でスプレッドシートのテスト情報から予定登録する機能を実装中に
以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
TypeError: Cannot read property 'createEvent' of null(行 42、ファイル「コード」)
ログを確認したところ、登録者<carender_id>,参加者<guests>が特定できないエラーでした。
!明](2b6b34d2a5495e747a793e9120f750e5.png)
該当のソースコード
GAS
1function createEvents() { 2//取得するスプレッドシートの特定 3 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 4 var sheet = spreadsheet.getSheetByName('登録予定'); 5 var values = sheet.getDataRange().getValues(); 6 7 //スプレッドシートの値取得 8 // ※var i の0番目はヘッダーになるので、1からスタートします。 9for (var i = 1; i < values.length; i++) { 10 11 // タイトル 12 var title = values[i][1]; 13 14 // 予定日 15 var date = values[i][2]; 16 17 // 開始時間 18 var startTime = values[i][3]; 19 var startDateTime = new Date(date.getFullYear(), 20 date.getMonth(), 21 date.getDate(), 22 startTime.getHours(), 23 startTime.getMinutes(), 0); 24 // 終了時間 25 var endTime = values[i][4]; 26 var endDateTime = new Date(date.getFullYear(), 27 date.getMonth(), 28 date.getDate(), 29 endTime.getHours(), 30 endTime.getMinutes(), 0); 31 32 var calender_id = [i][8] ; 33 var participant = [i][10]; 34 var option = { 35 guests:participant 36 }; 37 38 //登録カレンダーの特定 39 var calendar = CalendarApp.getCalendarById(calender_id); 40 41 // カレンダーへ登録 42 calendar.createEvent(title,startDateTime,endDateTime,option); 43 44 // i は配列のindexの為、セルを指定する時は +1する必要があります。 45 sheet.getRange(i + 1, 10).setValue(event.getId()); 46} 47} 48 49
試したこと
カレンダー登録のコマンド
calendar.createEvent(title,startDateTime,endDateTime,option);
にて値が正確に入っていないかと思い、
・配列とスプレッドシート上の情報を照合する
・カレンダーIDとguestsのメールアドレスをスプレッドシート上で''で囲う
・optionを無くしてトライしてみる
などしましたが、
同じエラーが起こりました。
補足情報(参照先のスプレッド情報)
G-suitを使用しています。
スプレッドシート上では、下記に情報を配列しています。
[1]会議名/予定/開始時間/終了時間/(1列挟む)/会議室ID /(1列挟む)/カレンダーID/(1列挟む)/[10]ゲストカレンダーID
新規事業会議/ 2021/03/19 /16:00:00/18:00:00/'x@x.google.com'/'x@x.com'/'xx@x.com,xy@x.com'
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。