【GAS】GoogleフォームとGoogleカレンダーで予約システムを作りたい

GAS

1function Reservation() { 2try{ 3//有効なGooglesプレッドシートを開く 4 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 5 6//新規予約された行番号を取得 7 var num_row = sheet.getLastRow(); 8 9//新規予約された行から名前を取得 10 var nname = sheet.getRange(num_row,10).getValue(); 11 12//メールアドレスの取得 13 var nmail = sheet.getRange(num_row,2).getValue(); 14 15//予約を記載するカレンダーを選択 16 var str = sheet.getRange(num_row,11).getDisplayValue(); 17 if(/^\s*【予約カレンダー①】\s*$/.test(str)){ 18 var cals = CalendarApp.getCalendarById("カレンダーID①"); 19 }else if(/^\s*【予約カレンダー②】\s*$/.test(str)){ 20 var cals = CalendarApp.getCalendarById("カレンダーID②"); 21 }else if(/^\s*【予約カレンダー③】\s*$/.test(str)){ 22 var cals = CalendarApp.getCalendarById("カレンダーID③"); 23 }else if(/^\s*【予約カレンダー④】\s*$/.test(str)){ 24 var cals = CalendarApp.getCalendarById("カレンダーID④"); 25 }else if(/^\s*【予約カレンダー⑤】\s*$/.test(str)){ 26 var cals = CalendarApp.getCalendarById("カレンダーID⑤"); 27 }else if(/^\s*【予約カレンダー⑥】\s*$/.test(str)){ 28 var cals = CalendarApp.getCalendarById("カレンダーID⑥"); 29 }else if(/^\s*【予約カレンダー⑦】\s*$/.test(str)){ 30 var cals = CalendarApp.getCalendarById("カレンダーID⑦"); 31 }else 32 var cals = CalendarApp.getCalendarById("カレンダーID⑧"); 33 34//予約の開始時間を取得 35 var stime = new Date(sheet.getRange(num_row,17).getValue()); 36 37//予約の終了時間を取得 38 var etime = new Date(sheet.getRange(num_row,18).getValue()); 39 40 var ndate = new Date(sheet.getRange(num_row,16).getValue()); 41 var ndates= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(),stime.getHours(),stime.getMinutes(),0); 42 var ndatee= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(),etime.getHours(),etime.getMinutes(),0); 43 44// 先約があるかどうか調べる 45 if(cals.getEvents(ndates, ndatee)==0){ 46 var sheat = sheet.getRange(num_row,11).getValue(); 47 var reservation = sheet.getRange(num_row,15).getDisplayValue(); 48 var thing = nname +"様 ご予約" + reservation + nmail + sheat ; 49 50//予約情報をカレンダーに追加 51 var r = cals.createEvent(thing, ndates, ndatee); 52 53 var doc = DocumentApp.openById('自動返信メール「申し込み成功」'); 54 var docText = doc.getBody().getText(); 55 var subject = '【ご予約完了】お申し込みありがとうございました。'; //メールの件名 56 var options = { 57 from : "送信用メールアドレス", 58 bcc : "共有メールアドレス,RPAトリガー用メールアドレス", 59 name : 'メールアドレス表示名' //差出人名 60 }; 61 var company = sheet.getRange(num_row,7).getValue(); 62 var Name = sheet.getRange(num_row,10).getValue(); //名前 63 var sheat = sheet.getRange(num_row,11).getValue(); //予約した座席 64 var mailAddress = sheet.getRange(num_row,2).getValue(); //アドレス 65 var stime = sheet.getRange(num_row,17).getDisplayValue(); //予約開始時間 66 var etime = sheet.getRange(num_row,18).getDisplayValue(); //予約終了時間 67 var ndate = sheet.getRange(num_row,16).getDisplayValue(); //ご予約日 68 var reserve = sheet.getRange(num_row,19).getDisplayValue(); //来店時間 69 var body = docText 70 .replace('{会社名}',company) 71 .replace('{名前}',Name) 72 .replace('{予約日}',ndate) 73 .replace('{開始時間}',stime) 74 .replace('{終了時間}',etime) 75 .replace('{名前}',Name) 76 .replace('{座席}',sheat) 77 .replace('{来店時間}',reserve) 78 GmailApp.sendEmail(mailAddress,subject,body,options); 79 80 }else{ 81 var doc = DocumentApp.openById('自動返信メール「申し込み失敗」'); 82 var docText = doc.getBody().getText(); 83 var subject = '【ご予約できませんでした】再度お申し込みください'; //メールの件名 84 var options = { 85 from : "送信用メールアドレス", 86 bcc : "共有メールアドレス", 87 name : 'メールアドレス表示名' //差出人名 88 }; 89 var company = sheet.getRange(num_row,7).getValue(); 90 var Name = sheet.getRange(num_row,10).getValue(); //名前 91 var sheat = sheet.getRange(num_row,11).getValue(); //予約しようとした座席 92 var mailAddress = sheet.getRange(num_row,2).getValue(); //アドレス 93 var body = docText 94 .replace('{会社名}',company) 95 .replace('{名前}',Name) 96 .replace('{座席}',sheat) 97 GmailApp.sendEmail(mailAddress,subject,body,options); 98 } 99 100 } catch(exp){ 101 //実行に失敗した時に通知 102 MailApp.sendEmail("共有メールアドレス", exp.message, exp.message); 103 } 104}

コメントを投稿

0 コメント