이번에는 ChatGPT에게 반대로 물어보았다.
" 구글시트 A열에는 일정 내용, B열에는 하루 일정이 있다. 일정 내용과 날짜를 구글 캘린더에 업로드하는 방법은? 구글시트의 날짜 형식은 2023.10.05(목)이야."

 
아래 구글시트에 입력되어 있는 학교 일정을 제 개인 구글캘린더에 한꺼번에  업로드하려 합니다. 이번에도 일일이 입력하는 것이 아니라 챗GPT로 하여금 앱스 스크립트 코드를 짜도록 하여 구글시트의 확장프로그램(Apps Script)을 이용해 실행 행, 자동 업로드해보겠습니다.

 

아래 캘린더에서 보라색 일정들이 업로드 결과입니다.

 

아래는 챗GPT가 제공한 코드를 수정없이 앱스 스크립트에 복사해 넣은 모습입니다. (코드 주석에 있듯이 제 캘린더 ID만 넣었습니다.)

 
정상 출력된 코드는 다음과 같습니다. (2번째 줄의 'YOUR_CALENDAR_ID_HERE' 대신 자신의 캘린더 ID를 입력하면 됩니다. 구글 캘린더-설정-갤린더 ID)

function uploadToGoogleCalendar() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var calendarId = 'YOUR_CALENDAR_ID_HERE'; // Google 캘린더의 ID를 입력하세요

  for (var i = 1; i < data.length; i++) {
    var eventTitle = data[i][0]; // A열: 일정 내용
    var dateString = data[i][1]; // B열: 날짜

    if (eventTitle && dateString) {
      var dateParts = dateString.match(/(\d{4})\.(\d{2})\.(\d{2})\((\D+)\)/); // 정규식을 사용하여 날짜를 파싱
      if (dateParts) {
        var year = parseInt(dateParts[1]);
        var month = parseInt(dateParts[2]) - 1; // JavaScript에서 월은 0부터 시작하므로 1을 빼줍니다.
        var day = parseInt(dateParts[3]);
        var dayOfWeek = dateParts[4];

        var eventDate = new Date(year, month, day, 0, 0, 0); // 날짜를 생성합니다.
        var calendar = CalendarApp.getCalendarById(calendarId);

        if (calendar) {
          calendar.createAllDayEvent(eventTitle, eventDate);
        }
      }
    }
  }
}

 


위 내용은 구글시트의 일정과 날짜(예> 2023.10.10(화))를 구글 캘린더에 업로드하는 방법이었는데, 이번에는 날짜뿐 아니라 시간을 포함하는 데이터(2023.10.10(화) 17:00)를 업로드하는 방법을 챗GPT에게 물었다. 그냥 물으니 '종일' 일정도 개별 시간(오전 12:00~)으로 잡길래 '종일' 옵션 선택을 강조해 물었다. 즉, 특정 시간이 있으면 시간 일정을 잡고 종일 일정이면 종일 옵션을 사용하게 했다.

 

아래는 챗GPT가 제공한 코드이고 전혀 수정없이 정상 출력되었습니다.(4번째 줄의 'YOUR_CALENDAR_ID_HERE' 대신 자신의 캘린더 ID를 입력하면 됩니다. 구글 캘린더-설정-갤린더 ID)

function uploadToGoogleCalendar() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var calendarId = 'YOUR_CALENDAR_ID_HERE'; // Google 캘린더의 ID를 입력하세요

  for (var i = 1; i < data.length; i++) {
    var eventTitle = data[i][0]; // A열: 일정 내용
    var dateString = data[i][1]; // B열: 날짜 및 시간

    if (eventTitle && dateString) {
      var dateParts = dateString.match(/(\d{4})\.(\d{2})\.(\d{2})\((\D+)\)(?: (\d{2}):(\d{2}))?/); // 정규식을 사용하여 날짜 및 시간을 파싱
      if (dateParts) {
        var year = parseInt(dateParts[1]);
        var month = parseInt(dateParts[2]) - 1; // JavaScript에서 월은 0부터 시작하므로 1을 빼줍니다.
        var day = parseInt(dateParts[3]);
        var dayOfWeek = dateParts[4];
        var hours = dateParts[5] ? parseInt(dateParts[5]) : 0;
        var minutes = dateParts[6] ? parseInt(dateParts[6]) : 0;

        var eventStartDate = new Date(year, month, day, hours, minutes, 0); // 시작 날짜 및 시간을 생성합니다.
        var eventEndDate = new Date(year, month, day, hours, minutes, 0); // 종료 날짜 및 시간을 생성합니다.

        if (!dateParts[5]) {
          // 시간 정보가 없는 경우, 종일 이벤트로 처리하도록 종료 날짜를 하루 늘립니다.
          eventEndDate.setDate(eventEndDate.getDate() + 1);
        }

        var calendar = CalendarApp.getCalendarById(calendarId);

        if (calendar) {
          calendar.createEvent(eventTitle, eventStartDate, eventEndDate, { description: "날짜: " + dateString });
        }
      }
    }
  }
}
반응형

+ Recent posts