Googleカレンダーからを予定時間に対応できる担当を探してスプレッドシートのプルダウンで選択できるようにしたい

実現したいこと

面談予約が入ったときに、複数人いるアドバイザーのGoogleカレンダーから面談日時に対応できるメンバーを探し、
プルダウンで表示させたい
イメージ説明

前提

複数人いるアドバイザーのGoogleカレンダーは自分のカレンダーに追加はしてあります

発生している問題・エラーメッセージ

エラーにはならず、プルダウンの選択肢にとして担当者名はでてくるのですが、
予定がはいっている場合も選択肢にでてきてしまいます。

### 該当のソースコード ```function findAvailableMembers() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = sheet.getLastRow(); var dates = sheet.getRange("P2:P" + lastRow).getValues(); var startTimes = sheet.getRange("Q2:Q" + lastRow).getValues(); var endTimes = sheet.getRange("R2:R" + lastRow).getValues(); var members = ["Aさん", "Bさん", "Cさん", "Dさん"]; // メンバーのリスト var memberCalendarIds = ["カレンダーID1", "カレンダーID2", "カレンダーID3", "カレンダーID4"]; // メンバーのカレンダーIDのリスト var outputRange = sheet.getRange("S2:S" + (lastRow + 1)); for (var i = 0; i < dates.length; i++) { var date = dates[i][0]; var startTime = startTimes[i][0]; var endTime = endTimes[i][0]; var availableMembers = []; // 利用可能なメンバーのリスト for (var j = 0; j < members.length; j++) { var calendar = CalendarApp.getCalendarById(memberCalendarIds[j]); var events = calendar.getEvents(new Date(date), new Date(date)); var isAvailable = true; for (var k = 0; k < events.length; k++) { var eventStartTime = events[k].getStartTime(); var eventEndTime = events[k].getEndTime(); if (eventStartTime.getTime() <= endTime.getTime() && eventEndTime.getTime() >= startTime.getTime()) { isAvailable = false; break; } } if (isAvailable) { availableMembers.push(members[j]); } } var validationRule = SpreadsheetApp.newDataValidation().requireValueInList(availableMembers).build(); outputRange.getCell(i + 1, 1).setDataValidation(validationRule); } }

コメントを投稿

0 コメント