ChatGPT에게 요청했다!

"구글캘린더에서 2023년 9월 일정을 구글시트로 가져오되, 날짜를 년.월.일(요일) 형식으로 표시하는 앱스 스크립트를 짜줘"

 

아래 일정 중 회색으로 입력된 학교 일정만 구글시트에 정리하여 월말 출결 정리에 활용할 계획입니다. 일일이 보고 입력하는 것이 아니라 챗GPT로 하여금 앱스 스크립트 코드를 짜도록 하여 구글시트의 확장프로그램(Apps Script)을 이용해 실행, 자동 정리해보겠습니다.

 

아래는 구글시트에 자동으로 불러들인 결과입니다. 이 결과를 출력해 나이스 출결 정리에 활용합니다.

 

아래는 챗GPT를 귀찮게 하여 겨우 얻어낸 완결된 코드를 앱스 스크립트에 복사해 넣은 모습입니다. (실제로는 한번이 아니라 원하는 결과를 얻기까지 챗GPT에게 자꾸 물어가며 계속 수정한 결과입니다.)

 

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

function importCalendarEvents() {
  var calendarId = 'YOUR_CALENDAR_ID_HERE'; // Google 캘린더의 ID를 입력하세요.
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var events = CalendarApp.getCalendarById(calendarId).getEvents(new Date('2023-10-01T00:00:00+09:00'), new Date('2023-10-31T23:59:59+09:00')); // 2023년 해당월의 시작과 끝 날짜를 설정합니다.

  // 스프레드시트에 헤더를 추가합니다.
  sheet.clear();
  sheet.appendRow(["일정 제목", "일정 시작일", "일정 종료일"]);

  // 캘린더에서 가져온 일정을 스프레드시트에 기록합니다.
  for (var i = 0; i < events.length; i++) {
    var event = events[i];
    
    // 한글 요일 포맷을 사용하여 날짜 표시
    var startTime = Utilities.formatDate(event.getStartTime(), "Asia/Seoul", "yyyy.MM.dd (E)");
    var endTime = Utilities.formatDate(event.getEndTime(), "Asia/Seoul", "yyyy.MM.dd (E)");
    
    // 요일을 한글로 변경
    startTime = startTime.replace(/\(Mon\)/g, "(월)");
    startTime = startTime.replace(/\(Tue\)/g, "(화)");
    startTime = startTime.replace(/\(Wed\)/g, "(수)");
    startTime = startTime.replace(/\(Thu\)/g, "(목)");
    startTime = startTime.replace(/\(Fri\)/g, "(금)");
    startTime = startTime.replace(/\(Sat\)/g, "(토)");
    startTime = startTime.replace(/\(Sun\)/g, "(일)");
    
    endTime = endTime.replace(/\(Mon\)/g, "(월)");
    endTime = endTime.replace(/\(Tue\)/g, "(화)");
    endTime = endTime.replace(/\(Wed\)/g, "(수)");
    endTime = endTime.replace(/\(Thu\)/g, "(목)");
    endTime = endTime.replace(/\(Fri\)/g, "(금)");
    endTime = endTime.replace(/\(Sat\)/g, "(토)");
    endTime = endTime.replace(/\(Sun\)/g, "(일)");
    
    // 일정이 하루인 경우, "일정 종료일" 셀을 비웁니다.
    if (event.isAllDayEvent()) {
      endTime = "";
    }
    
    sheet.appendRow([event.getTitle(), startTime, endTime]);
  }
}

 

 

 

 

 

 

반응형

+ Recent posts