본문 바로가기

IT

구글 캘린더와 연결

function onOpen(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [{name: "가져오기", functionName: "exeManual"}]; 
  ss.addMenu("휴가기록 가져오기", menuEntries);
                     
}

function exeManual(){
  var inputDay = Browser.inputBox('날자입력','시작날자를 "YYYY-MM-DD" 형태로 입력하세요', Browser.Buttons.OK_CANCEL);
  if( inputDay.length < 10 ) {
    Browser.msgBox('입력형식이 틀렸읍니다');
    return;
  }
  importEvents( inputDay );
}

function exeAuto(){
  var inputDay = new Date();
  importEvents( inputDay );
}


// 캘린더에서 이벤트를 가져오는 함수
function importEvents( inputDay ){
  
  var startOfDay = new Date(inputDay);
      startOfDay.setUTCHours(0);
      startOfDay.setMinutes(0);
      startOfDay.setSeconds(0);
      startOfDay.setMilliseconds(0);
  //var endOfDay = new Date(startOfDay.getTime() + 24 * 60 * 60 * 1000);
  var lastDay = (new Date( startOfDay.getFullYear(),startOfDay.getMonth()+1,0)).getDate();
  
  var endOfDay = new Date( startOfDay.getFullYear(),startOfDay.getMonth()+1,lastDay);
      startOfDay.setDate(1);
  
  Logger.log('--d---' + startOfDay + '::' + endOfDay);

  var Calendar = CalendarApp.getCalendarById("mz.co.kr_srg6jo25ps4k79dlgugqoii8i8@group.calendar.google.com");
  var events = Calendar.getEvents(startOfDay, endOfDay)
  var events_sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("원본자료");
  var lr = events_sheet.getLastRow();
  var rng = events_sheet.getRange(1,1,lr,7);
  rng.clearContent();

  var eventarray = new Array();

  var i = 0; // edited
    for (i = 0; i < events.length; i++) {
      line = new Array();
      var customEndDate = new Date(events[i].getEndTime() - 36e5);
      line.push(events[i].getTitle());
      line.push(events[i].getDescription());
      line.push(events[i].getStartTime());
      line.push(customEndDate.getFullYear() + '. ' + (customEndDate.getMonth() + 1) + '. ' + customEndDate.getDate());
      var nTitle = events[i].getTitle().split('[')[1].split('_')[0];
      if( nTitle.split(' ')[1] == null ) {
        var nTitle = nTitle.split(' ')[0];
        line.push( nTitle );
      } else {
        var nTitle = nTitle.split(' ')[0] + nTitle.split(' ')[1];
        line.push( nTitle );
      }
      //line.push(events[i].getTitle().split('[')[1].split('_')[0]);
      
      line.push(events[i].getTitle().split(']')[1].trim());
      
      var count = (events[i].getTitle().match(/_/g) || []).length;
      if( count == 1 ) {
        line.push(events[i].getTitle().split(']')[0].split('_')[1]);
      }
      else {
        line.push(events[i].getTitle().split(']')[0].split('_')[2]);
      }
      eventarray.push(line);
    }

    events_sheet.getRange('A1:G' + (i)).setValues(eventarray);

}