구글시트/Sheets

[구글시트]구글캘린더 동기화 2. 버튼 동기화

Consomme 2024. 7. 24. 18:23
반응형

구글캘린더와 동기화를 AppScript로 자동동기화 하였으나 문제가 발생하였습니다. 수기로 직접 시트에 입력하는 경우 전체를 입력하기도 전에 구글캘린더에 동기화가 됩니다. 그래서 시트에 입력을 다 하고, 버튼을 누르면, 동기화가 되도록 AppScript 코드를 만듭니다.

 

구글시트를 구글캘린더와 동기화 하는 방법 02. 버튼으로 동기화 하기

 

목차

 

1. AppScript 만들기

2. 권한검토

3. 구글시트 메뉴버튼 

4. 단점

 

 

 

위의 목차를 클릭하면 해당 글로 자동 이동 합니다.

 

1. AppScript 만들기

AppScript 실행

구글시트의 확장프로그램 ▶ App Script 를 클릭합니다.

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("동기화"); 
    }
  }
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('캘린더동기화')
    .addItem('Sync to Calendar', 'syncToCalendar')
    .addToUi();
}

위 코드를 복사하여 기존의 코드를 모두 지우고 붙여넣기 합니다.

AppScript 코드 입력

저장 후 실행을 합니다.

AppScript 실행로그

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

 

2. 권한검토

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

승인필요 ▶ 권한검토 클릭

 

권한검토

고급을 클릭합니다.

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

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

 

AppScript 실행 로그

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

 

 

3. 구글시트 메뉴버튼 

캘린더 동기화 버튼 활성화

구글시트를 새로고침하면

메뉴에 "캘린더 동기화" 버튼이 생성되었습니다.

데이터를 입력하고 메뉴버튼을 클릭하면 구글캘린더와 동기화를 진행합니다.

"결과"의 값에 동기화가 되었으면 건너뛰고 값이 없으면 동기화를 진행하고 "동기화"라고 입력됩니다.

 

4. 단점

모바일 환경에서는 버튼이 활성화 되지 않습니다.

오직, 데스크탑에서만 활성화 됩니다.

 

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

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

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

반응형