お世話になります。
GoogleフォームからGoogleカレンダーに表示する方法についてご教示頂きたいです。
実際の流れとして、Googleフォーム→Googleスプレッドシート→Googleカレンダーです。
ネットで見つけたGASのコードの変数などをイジり、スプレッドシートおよびカレンダーに表示させる事はできましたが、
なぜか「予定の開始日時は終了日時より前にしてください。」とエラーが出ます。
それも原因がわからず、予約を10:00~11:00で申請するとうまく表示され、
10:00~18:00と時間を長めにすると失敗します。
function sendToCalendar(e) {
try{
//有効な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 cals = CalendarApp.getCalendarById("GoogleカレンダーのID");
//予約の開始時間を取得
var stime = new Date(sheet.getRange(num_row, 6).getValue());
//予約の終了時間を取得
var etime = new Date(sheet.getRange(num_row, 7).getValue());
var ndate = new Date(sheet.getRange(num_row, 5).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 予約を承りました"
MailApp.sendEmail(nmail,"仮ご予約",thing);
}
else{
var thing =nname+"様 \n\n 先行予約あり"
MailApp.sendEmail(nmail,"予約できませんでした",thing);
}
} catch(exp){
//実行に失敗した時に通知
MailApp.sendEmail(nmail, exp.message, exp.message);
}
}
変数を変更したりしましたが原因はわからず仕舞いでした。
恐縮ですがご教示のほどよろしくお願いします。
コードを参考させて頂いた方のHPを記載します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/22 02:56