ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 구글 캘린더-구글 시트 자동화(오류'가져온 일정을 다시 가져올 때')
    AppsScript 2023. 12. 8. 22:20

    매번 트리거가 실행될 때마다 기존에 가져온 일정도 중복으로 가져오는 문제를 해결하기 위해서는 스크립트를 조금 수정해야 합니다. 기본적으로, 스크립트는 캘린더의 모든 이벤트를 가져와서 구글 시트에 추가하는 방식으로 작성되어 있는데, 중복을 피하기 위해 몇 가지 수정을 할 수 있습니다:

    1. 이미 가져온 이벤트 식별: 스크립트에 로직을 추가하여 이미 가져온 이벤트를 식별하고, 그러한 이벤트는 건너뛰도록 할 수 있습니다. 예를 들어, 이벤트의 ID나 제목과 시간을 조합하여 고유한 식별자를 만들고, 이를 이용해 중복을 확인할 수 있습니다.
    2. 구글 시트에 기록된 이벤트 확인: 스크립트가 실행될 때마다 구글 시트에 이미 기록된 이벤트를 확인하고, 이를 새로 가져오는 이벤트와 비교합니다. 이를 위해 스프레드시트에서 특정 열(예: 이벤트 ID 또는 제목과 시간의 조합)을 검색하여 이벤트가 이미 존재하는지 여부를 확인할 수 있습니다.
    3. 중복 제거 로직 추가: 스크립트에 중복을 확인하고 제거하는 로직을 추가합니다. 예를 들어, 새로 가져온 이벤트의 고유 식별자가 이미 시트에 존재하는 경우, 그 이벤트는 시트에 추가하지 않습니다.

    automating Calendar events into a Google Sheets format.

    수정 코드

    function importCalendarEvents() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var calendar = CalendarApp.getDefaultCalendar();
      var now = new Date();
      var events = calendar.getEventsForDay(now);
      var existingEvents = sheet.getDataRange().getValues();
    
      for (var i = 0; i < events.length; i++) {
        var event = events[i];
        var eventId = event.getId();
        var isDuplicate = false;
    
        // 기존 이벤트와 비교하여 중복 확인
        for (var j = 0; j < existingEvents.length; j++) {
          if (existingEvents[j].indexOf(eventId) > -1) {
            isDuplicate = true;
            break;
          }
        }
    
        // 중복되지 않은 경우에만 시트에 추가
        if (!isDuplicate) {
          sheet.appendRow([event.getTitle(), event.getStartTime(), event.getEndTime(), event.getDescription(), eventId]);
        }
      }
    }

    이 코드는 각 이벤트의 ID를 사용하여 중복을 확인하고, 중복되지 않은 이벤트만 구글 시트에 추가합니다. 이벤트 ID는 각 Google 캘린더 이벤트가 고유하게 가지고 있는 식별자입니다. 이 방식을 통해 중복된 데이터의 기록을 방지할 수 있습니다.

Copyright 2024