プログラム初心者で知識がほぼありません。。。
現在、Googleフォームを送信したらカレンダーに反映されるところまではできました。
フォームの回答のスプレッドシートに以下のスクリプトを入力しました。
こちらの形だと日にちをまたいでの予約ができないのでできるようにする方法はありますでしょうか?
・予約開始時間2017/11/16 23:00から◯◯時間の予約
・予約開始時間2017/11/16 23:00 予約終了時間2017/11/16 2:00までの予約
といった形のどちらかが取れたら理想です。ご指導いただけたら嬉しいです。
function sendToCalendar(e) { try{ //有効な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 cals = CalendarApp.getCalendarById("f2v76qfhpd00nl7dn7kma7un84@group.calendar.google.com"); //予約の開始時間を取得 var stime = new Date(sheet.getRange(num_row, 5).getValue()); //予約の終了時間を取得 var etime = new Date(sheet.getRange(num_row, 6).getValue()); var ndate = new Date(sheet.getRange(num_row, 4).getValue()); 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); // 先約があるかどうか調べる if(cals.getEvents(ndates, ndatee)==0){ var thing = nname+"様 ご予約"; //予約情報をカレンダーに追加 var r = cals.createEvent(thing, ndates, ndatee); var thing =nname+"様 \n\n ご仮予約を承りました。\n 別途、確定のお知らせをいたします。\n\n ありがとうございました" MailApp.sendEmail(nmail,"仮ご予約",thing); } else{ var thing =nname+"様 \n\n ご予約の時間に先約がありましたので、\n 申し訳ございませんが、ご予約いただけませんでした。\n\n ご予定を変更して再度お申込みください" MailApp.sendEmail(nmail,"ご予約できませんでした",thing); } } catch(exp){ //実行に失敗した時に通知 MailApp.sendEmail(nmail, exp.message, exp.message); } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。