구글시트/Sheets

[구글시트] 구글캘린더 동기화 4. 시간경과후 자동동기화

Consomme 2024. 7. 24. 20:27
반응형

구글시트에 작성된 일정을 구글캘린더와 동기화를 2가지로 해보았습니다. 시트에 일정을 직접입력하는 경우 데스크탑이면, 버튼이 유리하고, 모바일환경이 많으면 정해놓은 시간이 경과 하면 자동으로 일정이 동기화 되도록 하는 것이 답인것 같습니다.

 

구글시트 구글캘린더 일정시간이 지나면 자동 동기화(모바일환경)

[목차]

 

1. AppScript 만들기

function onEdit(e) {
  var sheet = e.source.getActiveSheet();
  if (sheet.getName() === '구글캘린더') {
    createTrigger();
  }
}

function createTrigger() {
  // 현재 설정된 모든 시간 기반 트리거 삭제
  var triggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() == 'syncToCalendar') {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }
  
  // 1분 후에 syncToCalendar 함수를 실행하는 트리거 생성
  ScriptApp.newTrigger('syncToCalendar')
    .timeBased()
    .after(1 * 60 * 1000) // 1분 후 실행
    .create();
}

function syncToCalendar() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var calSheet = ss.getSheetByName("구글캘린더");
  var lastRow = calSheet.getLastRow();

  for (var i = 2; i <= lastRow; i++) {
    var isSynced = calSheet.getRange(i, 5).getValue(); 
    if (isSynced == "") {
      var startDate = new Date(calSheet.getRange(i, 1).getValue());
      var endDate = new Date(calSheet.getRange(i, 2).getValue());
      endDate.setDate(endDate.getDate() + 1); 
      var title = calSheet.getRange(i, 3).getValue();
      var description = calSheet.getRange(i, 4).getValue();

      var calendar = CalendarApp.getCalendarById('캘린더ID');
      calendar.createAllDayEvent(title, startDate, endDate, {
        description: description
      });

      calSheet.getRange(i, 5).setValue("동기화"); 
    }
  }
}

 

  • 구글캘린더ID는 본인의 캘린더ID로 수정입력하셔야 합니다.
  • 테스트를 위해 1분으로 설정하였습니다. 일정을 작성하기 위한 충분한 시간으로 변경하시면 됩니다.
  • 일정을 작성하고 구글시트를 종료해도 일정이 등록됩니다.

 

2. 권한검토

저장하고 실행을 누르면, 최초 1회 권한검토 과정이 나옵니다.

이미 하셨다면 통과하세요.

승인필요 ▶ 권한검토 클릭

 

권한검토

고급을 클릭합니다.

맨아래 ▶캘린더 동기화으로 이동( 안전하지 않음) 클릭

내 Google계정에 엑세스하려고 합니다. ▶ 허용 클릭

 

AppScript 실행 로그

 실행이 완료되면 성공입니다.

 

 

3. 트리거 만들기

트리거 추가

왼쪽메뉴의 트리거를 클릭합니다.

오른쪽 아래 "트리거 추가" 버튼을 클릭합니다.

 

 

트리거 추가

데이터 변경시 실행해야 하므로 

이벤트 유형 선택 ▶ 변경시 로 변경하고 저장합니다.

 

 

꼭 성공하셨으면 합니다.

 

 

 

구글시트 구글캘린더 동기화 관련글

2024.07.24 - [전체보기] - [구글시트] 구글캘린더 동기화 1.

2024.07.24 - [전체보기] - [구글시트]구글캘린더 동기화 02. 버튼 동기화

2024.07.24 - [구글 시트&앱시트] - [구글시트] 구글캘린더 동기화 3. 자동동기화

 

 

 

 

 

 

반응형