施設利用時間をスプレッドシートに一覧化し、そのスプレッドシートの日時をカレンダーに連携するシステムを作成しています。
スプレッドシートには、以下を入力し、終了時間がはいった段階でカレンダーに追記します。
キャンセルが入ったら、I列にキャンセル者名を入力し、入力されたらその予定をカレンダーから削除したいのですが、キャンセルと同じ行の予定が削除されません。
特に、時間がかぶっている場合は、キャンセルされたものとは違うほうの予定が削除されます。
A列 タイムスタンプ
B列スコア
C列 利用者名
D列 日程
E列 開始時間
F列 終了時間
I列 キャンセル
ご確認いただけないでしょうか。
function
1 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 2var rng = sheet.getActiveCell(); 3var num_row = rng.getRow(); 4 5//利用者名 6var name = sheet.getRange(num_row,3).getValue(); 7 8 9//開始時間を取得 10 var stime = new Date(sheet.getRange(num_row, 5).getValue()); 11 var stime2 = sheet.getRange(num_row, 5).getDisplayValues(); 12 13 //終了時間を取得 14 var etime = new Date(sheet.getRange(num_row, 6).getValue()); 15 var etime2 = sheet.getRange(num_row, 6).getDisplayValues(); 16 17 18 //日程を取得 19 var ndate = new Date(sheet.getRange(num_row, 4).getValue()); 20 var ndate2 = sheet.getRange(num_row, 4).getDisplayValues(); 21 22 var ndates= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(),stime.getHours(),stime.getMinutes(),0); 23 var ndatee= new Date(ndate.getFullYear(),ndate.getMonth(),ndate.getDate(),etime.getHours(),etime.getMinutes(),0); 24 25 26 var calslibadd = CalendarApp.getCalendarById("カレンダーID"); 27 28 var events=calslibadd.getEvents(ndates, ndatee); 29 30//カレンダー追加 31if(rng.getColumn()== 6 ){ 32 33 34var r = calslibadd.createEvent(name, ndates, ndatee); 35 36} 37//キャンセルカレンダー削除 38if(rng.getColumn()== 9 ){ 39events[0].deleteEvent(); 40} 41 42 43} 44 45 46
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 06:27
2020/06/29 09:14
2020/07/06 03:23