現在、Formから予約受付を行い、カレンダー・スプレッドシートと連携をさせた会議室予約受付を作成します。
Formから予約があったら、カレンダーに先約が入っていないか確認をし、入っていない場合はそのままカレンダーとスプレッドシートに追記し、仮予約受付メールの送信ができるようにしました。
先約が入っている場合はカレンダーとスプレッドシートに追記せず、先約が入っているため再度予約をし直して下さいのメールを送るようにしました。
if~elseの条件分岐で作成しています。
2週間前に実行をした際は、正常に動いていたのですが、最終チェックとして先週再度実行を行ったところ、カレンダーに予約が入っていない場合、本来なら、ifに設定したスクリプトのみが実行されるはずなのですが、elseに設定したスクリプトも実行されてしまうようになりました。
ifもelseも実行され、「仮予約受付メール」と「先約が入っているため再度予約をし直して下さい」のメールが同時に送信され、スプレッドシートは何も追記がされなくなっています。
しかし、カレンダーには予定が入った状態となっています。
カレンダーにすでに予約を入れ、再度、同じ日時でFormから申請を行うと、elseのスクリプトのみがきちんと実行されます。
カレンダーの再作成を行たっり、再度スクリプトも作成しなおしてみたのですが、原因がわかりません。
どなたか、同じ現象になった方で解決方法をご存知の方がいらっしゃったら、宜しくお願い致します。
function sendToCalendar(e) { //有効なGooglesプレッドシートを開く var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); //新規予約された行番号を取得 var num_row = sheet.getLastRow(); //新規予約された行から名前を取得 var nname = sheet.getRange(num_row, 3).getValue(); //メールアドレスの取得 var nmail = sheet.getRange(num_row,2).getValue(); //予約の利用用途を取得 var youto = sheet.getRange(num_row, 11).getValue(); //予約の場所を取得 var space = sheet.getRange(num_row, 12).getValue(); //予約の機器を取得 var kiki = sheet.getRange(num_row, 10).getValue(); //予約の人数を取得 var people = sheet.getRange(num_row, 9).getValue(); //予約を記載するカレンダーを取得 var cals = CalendarApp.getCalendarById("カレンダーID"); //予約の開始時間を取得 var stime = new Date(sheet.getRange(num_row, 7).getValue()); var stime2 = sheet.getRange(num_row, 7).getDisplayValues(); //予約の終了時間を取得 var etime = new Date(sheet.getRange(num_row, 8).getValue()); var etime2 = sheet.getRange(num_row, 8).getDisplayValues(); //予約日を取得 var ndate = new Date(sheet.getRange(num_row, 6).getValue()); var ndate2 = sheet.getRange(num_row, 6).getDisplayValues(); var ndates= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(),stime.getHours(),stime.getMinutes(),0); var ndatee= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(),etime.getHours(),etime.getMinutes(),0); var option = { description : nname +'、'+ kiki +'、'+ people+'人', location : space } // 先約があるかどうか調べる if(cals.getEvents(ndates, ndatee) == 0 ){ var thing = youto ; //予約情報をカレンダーに追加 var r = cals.createEvent(thing, ndates, ndatee, option); var subject = "仮予約"; var body =''; body += '申請ありがとうございます。\n'; body += '仮予約を受付致しました。\n'; body += '\n'; body += '【申請内容】\n'; body += ' ・申請者名 : ' + nname + '\n'; body += ' ・予約日 : ' + ndate2 + '\n'; body += ' ・開始時間 : ' + stime2 + '\n'; body += ' ・終了時間 : ' + etime2 + '\n'; body += ' ・利用用途 : ' + youto + '\n'; body += ' ・場所 : ' + space + '\n'; body += ' ・人数 : ' + people + "人" + '\n'; body += ' ・利用機材 : ' + kiki + '\n'; body += '\n'; body += '予約確定次第、再度のこメールアドレスにご連絡致します。'; GmailApp.sendEmail(nmail,subject,body, { from: 'メールアドレス', name: 'XXXXXXXXX',}); var subject2 = "受付をお願い致します。"; var body2 =''; body2 += '予約申請の仮予約がありました。\n'; body2 += '受付をお願いします。\n'; body2 += '\n'; body2 += '以下のURLから詳細をご確認下さい。\n'; body2 += '\n'; body2 += '【詳細確認と承認はこちら】\n'; body2 += 'https://docs.google.・・・・ '; GmailApp.sendEmail('メールアドレス',subject2,body2, { from: 'メールアドレス', name: 'XXXXXXXXXX',}); } else{ sheet.deleteRow(num_row); var body3 =''; body3 += 'ご予約の時間に先約がありましたので、\n'; body3 += '申し訳ございませんが、ご予約いただけませんでした。\n'; body3 += '\n'; body3 += '再度お申込みください。\n'; body3 += '\n'; body3 += '【ご予約はこちら】\n'; body3 += ' https://・・・・・ ' ; body3 = nname+" 様\n\n"+body3; GmailApp.sendEmail(nmail,"ご予約できませんでした",body3, { from: 'メールアドレス', name: 'XXXXXXXX',}); } }