複数のGoogleカレンダーの予定をスプレッドシートに読込したいのですが、gasが作動せず初心者な者でよくわからないので教えて頂きたいです。
最終的にやりたい事は
毎月の予定を自動更新
就業時間が月178時間を超えたらグループラインに通知です。
よろしくお願いいたします。
エラーが出ているのは一番上の所です。
その月の1日からカレンダーを取得して次の月に入った時はクリアーにしたいのです。
var date = DATE(YEAR(TODAY()),MONTH(TODAY()),1); var sheet = SpreadsheetApp.getActiveSpreadsheet(); var calendarId = sheet.setActiveSheet(sheet.getSheetByName("Calendar_ID")); var calendarItem = sheet.setActiveSheet(sheet.getSheetByName("Calendar_Item")); function getId(){ calendarItem.clear(); calendarItem.getRange('A'+(1)).setValue('カレンダーID'); calendarItem.getRange('B'+(1)).setValue('タイトル'); calendarItem.getRange('C'+(1)).setValue('開始時刻'); calendarItem.getRange('D'+(1)).setValue('終了時刻'); calendarItem.getRange('E'+(1)).setValue('所要時間'); var lastR1 = calendarId.getLastRow(); Logger.log("【lastR】:" + lastR1); for (var i = 1; i < lastR1 ; i++){ var lastR2 = calendarItem.getLastRow(); Logger.log("【lastR】:" + lastR2); var calId = calendarId.getRange('A'+(i+1)).getValue(); Logger.log('【calId】' + calId); getCal(calId,lastR2); } } function getCal(id,lastR) { Logger.log('【id】' + id); Logger.log('【lastR】' + lastR); var calendar = CalendarApp.getCalendarById(id); var from= new Date(date); var end = new Date(date); end.setMonth(end.getMonth()+1); var events = calendar.getEvents(from, end); for (var i = 0; i < events.length; i++) { Logger.log('events要素' + i + '目'); var title = events[i].getTitle(); var startTime = events[i].getStartTime(); var endTime = events[i].getEndTime(); var duration = (endTime - startTime) /(1000*60)/(60); var detail = events[i].getDescription(); var location = events[i].getLocation(); calendarItem.getRange('A'+(lastR+1)).setValue(id); calendarItem.getRange('B'+(lastR+1)).setValue(title); calendarItem.getRange('C'+(lastR+1)).setValue(startTime).setNumberFormat('yyyy/mm/dd hh:mm'); calendarItem.getRange('D'+(lastR+1)).setValue(endTime).setNumberFormat('yyyy/mm/dd hh:mm'); calendarItem.getRange('E'+(lastR+1)).setValue(duration); //calendarItem.getRange('E'+(lastR+1)).setValue(detail); calendarItem.getRange('G'+(lastR+1)).setValue(location); lastR = lastR + 1; } }
上記のは完成いたしました。
ありがとうございます。
178時間を超えたらラインする(超えない場合は作動しない)というGASがラインは送信してるのすが、コードがうまくいきません。
よろしくお願いいたします。スプレッドシート内は
名前 時間
① 0
② 0
③ 0
④ 0
⑤ 0
と記入されてるシートしか使っておりません。
var today = new Date(); var date = new Date(today.getFullYear(), today.getMonth(), 1); function myFunction() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = SpreadsheetApp.openById("スプレッドシートID"); var sheet = Spreadsheet.getSheetByName("就業") var range = sheet.getRange("A2:B8"); Logger.log(range.getValues()); } // LINE notifyへの通知 function sendHttpPost(content){ var token = "ライントークン"; var options = { "method" : "post", "payload" : "message=" + content, "headers" : {"Authorization" : "Bearer "+ token} }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); }
回答2件
あなたの回答
tips
プレビュー