Formから予約日を入力し、毎週同じ時間に予約をする場合は、Googleカレンダーに毎週同じ時間に予定を追加する方法がうまくいきません。
どこを修正すればよいか、教えていただければ幸いです。
開始日、終了日の期間のみ、開始時間~終了時間を開始日の曜日に毎週、終了日まで追加をするルールを作成したいのですが、「TypeError: オブジェクト EventRecurrence で関数 onlyOnWeekday が見つかりません。」のMSGがメールに表示されます。
function PC(e) { //有効なGooglesプレッドシートを開く var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); //新規予約された行番号を取得 var num_row = sheet.getLastRow(); //新規予約された行から名前を取得 var nname = sheet.getRange(num_row, 2).getValue(); //メールアドレスの取得 var nmail = sheet.getRange(num_row,4).getValue(); //利用期間(毎週か毎週以外か) var kikan = sheet.getRange(num_row, 7).getValue(); //予約を記載するカレンダーを取得 var cals = CalendarApp.getCalendarById("カレンダーID"); var days = [ CalendarApp.Weekday.SUNDAY, CalendarApp.Weekday.MONDAY, CalendarApp.Weekday.TUESDAY, CalendarApp.Weekday.WEDNESDAY, CalendarApp.Weekday.THURSDAY, CalendarApp.Weekday.FRIDAY, CalendarApp.Weekday.SATURDAY ]; //開始時間を取得 var stime = new Date(sheet.getRange(num_row, 10).getValue()); var stime2 = sheet.getRange(num_row, 10).getDisplayValues(); //終了時間を取得 var etime = new Date(sheet.getRange(num_row, 11).getValue()); var etime2 = sheet.getRange(num_row, 11).getDisplayValues(); //開始日を取得 var sdate = new Date(sheet.getRange(num_row, 8).getValue()); var sdate2 = sheet.getRange(num_row, 8).getDisplayValues(); //終了日を取得 var edate = new Date(sheet.getRange(num_row, 9).getValue()); var edate2 = sheet.getRange(num_row, 9).getDisplayValues(); var ndates= new Date(sdate.getFullYear(),sdate.getMonth(),sdate.getDate(),stime.getHours(),stime.getMinutes(),0); var ndatee= new Date(edate.getFullYear(),edate.getMonth(),edate.getDate(),etime.getHours(),etime.getMinutes(),0); var weekday = days[stime.getDay()]; var option = { description : nname, location : space } var result = kikan.indexOf('毎週'); // 空き状況確認(毎週以外) if( result ==-1){ var thing = nname ; //予約情報をカレンダーに追加 var r = cals.createEvent(thing, ndates, ndatee, option); var subject = "件名"; var body =''; body += 'ありがとうございます。\n'; GmailApp.sendEmail(nmail,subject,body, { from: '**********', name: '**********',}); var subject2 = "件名"; var body2 =''; body2 += '確認をお願いします。\n'; GmailApp.sendEmail('************',subject2,body2, { from:'************', name:'************',}); } // 空き状況確認(毎週) if(result !=-1){ var thing = nname ; var rec = CalendarApp.newRecurrence().onlyOnWeekday(weekday).until(edate); //予約情報をカレンダーに追加 var r = cals.createEventSeries(thing, ndates, ndatee, rec,option); var subject3 = "件名"; var body3 =''; body3 += '申請ありがとうございます。\n'; GmailApp.sendEmail(nmail,subject3,body3, { from:'**********', name:'***********',}); var subject4 = "件名"; var body4 =''; body4 += '確認をお願いします。\n'; GmailApp.sendEmail('**********',subject4,body4, { from:'**********', name:'***********',}); } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。