前提・実現したいこと
ここに質問の内容を詳しく書いてください。
現在ホテルの予約システム用にフォームで入力した内容
をスプレッドシートからカレンダー連携でカレンダーで管理したいと思っていますが、
フォームの複数の項目(人数や料理コース名など)をカレンダーに反映させたいのですがうまく
カレンダーに反映されません。
また1日以上の予定をカレンダーに反映させたいのですがそちらもうまくいきません。
初心者で見よう見まねでいろいろ調べたんですが、検索でいい回答が得られないです。
宜しくお願い致します
該当のソースコース
function sendToCalendar(e) {
try{
//有効なGooglesプレッドシートを開く
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
//新規予約された行番号を取得
var num_row = sheet.getLastRow();
//新規予約された行から名前を取得
var nname = sheet.getRange(num_row, 3).getValue();
//部屋の取得
var nname = sheet.getRange(num_row,3).getValue();
//予約を記載するカレンダーを取得
var cals = CalendarApp.getCalendarById("カレンダーID");
//予約の開始時間を取得
var stime = new Date(sheet.getRange(num_row, 7).getValue());
//予約の終了時間を取得
var etime = new Date(sheet.getRange(num_row, 9).getValue());
//取得開始日
var startDate=new Date(sheet.getRange(num_row, 6).getValue());
//取得終了日
var endDate=new Date(sheet.getRange(num_row, 8).getValue());
var ndate = new Date(sheet.getRange(num_row, 6).getValue());
var ndates= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(6),stime.getHours(),stime.getMinutes(),0);
var ndatee= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(8),etime.getHours(),etime.getMinutes(),0);
var options = {
description: sheet.getRange(num_row,3,11).getValues(),
location: sheet.getRange(num_row,2).getValue(),
}
// 先約があるかどうか調べる
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);
}
}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/03 21:34
2021/03/04 04:08 編集
2021/03/15 09:21
2021/03/15 09:32
2021/03/16 13:20 編集