質問編集履歴

2

Cabe

Cabe score 16

2017/11/17 13:54  投稿

GAS googleカレンダーとgoogleフォームの同期
プログラム初心者で知識がほぼありません。。。
現在、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);
}
}
```
  • Google

    1742 questions

    Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

1 書式

Cabe

Cabe score 16

2017/11/16 13:26  投稿

GAS googleカレンダーとgoogleフォームの同期
プログラム初心者で知識がほぼありません。。。
現在、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);
}
}
}
```
  • Google

    1742 questions

    Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る