※最終的にやりたいことを追記いたしました
ーーーーー
Google Apps Scriptで複数人のカレンダーから予定有無の情報を取得し、
予定がない時間のみログに書きだそうとしています。
目的はGoogleカレンダー上でイベント登録する際に、
複数のゲストの空き時間を確認するのが大変なので、
最初から複数ゲスト全員が空いている時間だけをピックアップし、
スクリプト上で実装したウェブアプリケーションでプルダウンで表示させ、
選択された日付にcreateEventさせようとしています。
エラーは出ず実行できるのですが、求めているログ結果となりません。
配列に格納していって、_.intersectionで重複分だけを表示させようとしています。
(ライブラリにUnderscore追加済み)
何か良い方法をご教示いただけると幸いです…
(Google検索で集めた情報で作ったレベルであること重々承知です…)
function set_availability(sheet, column, id){ //時間の記載されているSS var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var availability_spreadsheet = spreadsheet.getSheetByName('SS'); var calendar_id = "アドレス1"; var calendar_id2 = "アドレス2"; var last_row = availability_spreadsheet.getLastRow() var calendar_info = CalendarApp.getCalendarById(calendar_id); var calendar_info2 = CalendarApp.getCalendarById(calendar_id2); //ステータス列の判定 var array_data=[]; for(var i = 3; i <= last_row; i++){ //SS3行目から30分ごとに時間が記載されています var start_date_base = availability_spreadsheet.getRange(i, 1).getValue(); var start_date_tmp = new Date(start_date_base); var end_date_tmp = start_date_tmp.setMinutes(start_date_tmp.getMinutes()+30); var start_date = new Date(start_date_base); var end_date = new Date(end_date_tmp); var myEvents= calendar_info.getEvents(start_date, end_date); var myEvents2= calendar_info2.getEvents(start_date, end_date); //予定がなかったら格納 if (myEvents.length == 0){ var start_date_in = Utilities.formatDate(start_date , "Asia/Tokyo", "yyyy/MM/dd HH:mm"); array_data.push(start_date_in); } //予定がなかったら格納 if (myEvents2.length == 0){ var start_date_in = Utilities.formatDate(start_date , "Asia/Tokyo", "yyyy/MM/dd HH:mm"); array_data.push(start_date_in); } } var _ =Underscore.load(); var array_data = _.intersection(array_data); Logger.log(array_data); }
回答2件
あなたの回答
tips
プレビュー