- 자동으로 구글 캘린더에 일정 추가하기
구글 앱스크립트를 활용하여 스프레드시트 데이터를 기반으로 자동으로 캘린더에 일정을 추가하는 방법이다. 아래 스크립트는 스프레드시트의 데이터를 읽어와서 캘린더에 일정을 추가하고, 그에 따른 처리를 수행한다.
function addEventsToCalendar() {
// 캘린더 ID와 스프레드시트 시트 이름 설정
const calendarId = "캘린더 ID"; // 여기에 캘린더 ID를 입력하세요.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("시트이름");
// 스프레드시트 데이터 읽어오기
const dataRange = sheet.getDataRange().getValues();
// 각 행에 대한 반복문
for (var i = 1; i < dataRange.length; i++) {
var row = dataRange[i];
// 날짜가 비어있거나 이미 처리된 경우 이벤트 추가를 건너뜁니다.
if (row[1] === "" || row[23] === "완료") {
continue;
}
// 필요한 정보 추출
var location = row[4]; // 지역
var place = row[5]; // 장소
var title = location + " " + place; // 캘린더 제목
var date = row[22]; // 캘린더 일정
// 캘린더 이벤트 생성
var event = createEvent(title, date);
// 캘린더 설명 추가
var groomName = row[7]; // 신랑이름
var brideName = row[6]; // 신부이름
var invitation = row[9]; // 모바일청첩장
event.setDescription("신랑: " + groomName + "\n신부: " + brideName + "\n모바일청첩장: " + invitation);
// 등록 여부 스프레드시트에 표시
var columnNum = "X"; // 등록여부 열
var rowNum = i + 1; // 등록여부 행
var cell = columnNum + rowNum;
insertComplete(cell);
}
// 캘린더 이벤트 생성 함수
function createEvent(title, date) {
var startDate = new Date(date);
var endDate = new Date(startDate.getTime() + 2 * 60 * 60 * 1000); // 시작시간에서 2시간 후
return CalendarApp.getCalendarById(calendarId).createEvent(title, startDate, endDate);
}
// 등록 여부 완료 처리 함수
function insertComplete(cell) {
sheet.getRange(cell).setValue("완료");
}
}
이 코드는 설정한 캘린더 ID와 스프레드 시트 이름을 사용하여 데이터를 읽어온 후, 각 행을 반복하여 처리한다. 날짜가 비어 있거나 이미 처리된 경우 해당 이벤트를 건너뛰며 그렇지 않은 경우, 캘린더 제목과 일정을 설정하고 이를 기반으로 캘린더에 이벤트를 생성한다.
이벤트가 생성되면, 해당 행의 신랑, 신부 이름과 모바일 청첩장 링크를 캘린더 이벤트 설명에 추가한다. 마지막으로, 등록 여부를 스프레드시트에 표시하여 처리 상태를 추적한다.