前提・実現したいこと
GASを使ってスプレッドシートからGoogleカレンダーへスケジュールの時限式で自動追加をしたいと思っています。
現在下記サイトを参考にしながらコードを作っていますが、正しく機能しないためどこがいけないのかを教えていただきたいです。
時限稼働はGoogle App Scriptのタイマーから行う予定です。
参考元:https://www.whizz-tech.co.jp/3996/
シート名(スケジュール)
|連携|日にち|開始時間|終了時間|タイトル|説明|
|:--|:--:|--:|
||2020年7月3日|19:00|22:00|食事|友人と食事|
上記シートをもとにGoogleカレンダーに追加をしようとしています
また下記のような表の時に
|連携|日にち|開始時間|終了時間|タイトル|説明|重要度|
|:--|:--:|--:|
||2020年7月3日|19:00|22:00|食事|友人と食事|1|
重要度が1ならスケジュールの色を青に2なら赤になど設定する方法がありましたら是非ご教授願います。
該当のソースコード
javaScript
1function createSchedule() { 2 3 // 連携するアカウント 4 const gAccount = "xxxxx@gmail.com"; // ★★ここに連携するカレンダーのアドレスを入れる 5 6 7 // 読み取り範囲(表の始まり行と終わり列) 8 const topRow = 2; 9 const lastCol = 7; 10 11 // 0始まりで列を指定しておく 12 const statusCellNum = 0; 13 const dayCellNum = 1; 14 const startCellNum = 2; 15 const endCellNum = 3; 16 const titleCellNum = 4; 17 const descriptionCellNum = 5; 18 const PriorityCellNum = 6; 19 20 // シートを取得 21 var objSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 22 23 // シート名を記入。 24 var objSheet = objSpreadsheet.getSheetByName("カレンダー追加"); 25 var sheet = SpreadsheetApp.setActiveSheet(objSheet); 26 27 28 // 予定の最終行を取得 29 var lastRow = sheet.getLastRow(); 30 31 //予定の一覧を取得 32 var contents = sheet.getRange(topRow, 1, sheet.getLastRow(), lastCol).getValues(); 33 34 // googleカレンダーの取得 35 var calender = CalendarApp.getCalendarById(gAccount); 36 37 //順に予定を作成(今回は正しい値が来ることを想定) 38 for (i = 0; i <= lastRow - topRow; i++) { 39 40 //「済」っぽいのか、空の場合は飛ばす 41 var status = contents[i][statusCellNum]; 42 if ( 43 status == "済" || 44 status == "済み" || 45 status == "OK" || 46 contents[i][dayCellNum] == "" 47 ) { 48 continue; 49 } 50 51 // 値をセット 日時はフォーマットして保持 52 var day = new Date(contents[i][dayCellNum]); 53 var startTime = contents[i][startCellNum]; 54 var endTime = contents[i][endCellNum]; 55 var title = contents[i][titleCellNum]; 56 // 場所と詳細をセット 57 var options = {description: contents[i][descriptionCellNum]}; 58 59 try { 60 // 開始終了が無ければ終日で設定 61 if (startTime == '' || endTime == '') { 62 //予定を作成 63 calender.createAllDayEvent( 64 title, 65 new Date(day), 66 options 67 ); 68 69 // 開始終了時間があれば範囲で設定 70 } else { 71 // 開始日時をフォーマット 72 var startDate = new Date(day); 73 startDate.setHours(startTime.getHours()) 74 startDate.setMinutes(startTime.getMinutes()); 75 // 終了日時をフォーマット 76 var endDate = new Date(day); 77 endDate.setHours(endTime.getHours()) 78 endDate.setMinutes(endTime.getMinutes()); 79 // 予定を作成 80 calender.createEvent( 81 title, 82 startDate, 83 endDate, 84 options 85 ); 86 } 87 88 //無事に予定が作成されたら「済」にする 89 sheet.getRange(topRow + i, 1).setValue("済"); 90 91 // エラーの場合(今回はログ出力のみ) 92 } catch(e) { 93 Logger.log(e); 94 } 95 96 } 97 98}
試したこと
実行してもGoogleカレンダーには何も追加されずエラーメッセージも出ないため私の知識ではお手上げです。。。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。