[GAS] 자동으로 구글 캘린더에 일정 추가하기 [구글 스프레드 시트와 캘린더 연동하기]

2024. 4. 22. 14:18·◎ JavaScript/Google App Script🐑
728x90


- 자동으로 구글 캘린더에 일정 추가하기

구글 앱스크립트를 활용하여 스프레드시트 데이터를 기반으로 자동으로 캘린더에 일정을 추가하는 방법이다. 아래 스크립트는 스프레드시트의 데이터를 읽어와서 캘린더에 일정을 추가하고, 그에 따른 처리를 수행한다.

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와 스프레드 시트 이름을 사용하여 데이터를 읽어온 후, 각 행을 반복하여 처리한다. 날짜가 비어 있거나 이미 처리된 경우 해당 이벤트를 건너뛰며 그렇지 않은 경우, 캘린더 제목과 일정을 설정하고 이를 기반으로 캘린더에 이벤트를 생성한다.

이벤트가 생성되면, 해당 행의 신랑, 신부 이름과 모바일 청첩장 링크를 캘린더 이벤트 설명에 추가한다. 마지막으로, 등록 여부를 스프레드시트에 표시하여 처리 상태를 추적한다.

728x90
'◎ JavaScript/Google App Script🐑' 카테고리의 다른 글
  • [GAS] 구글 앱 스크립트 doGet과 doPost 사용 방법 [구글 앱 스크립트로 외부 요청 처리하기]
  • [GAS] 외부에서 구글 스프레드 시트에서 데이터 가져오기 [Google Sheets에서 URL 해시 매핑 데이터 가져오기]
  • [GAS] 외부에서 URL과 해시 값을 받아 스프레드시트에 저장하기 [Google Sheets에 외부 데이터 추가하기]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (937)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (32)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (89)
        • 백준(BOJ)👨🏻‍💻 (70)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
        • 알고리즘(Algorithm)🎡 (10)
      • ◈ Study (102)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (6)
      • ◈ 공부모임 (39)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (11)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (113)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (44)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 태그

    Oracle
    백준
    html
    Database
    javascript
    CSS
    백준 티어
    일상
    Error Note
    자바스크립트
    SQL
    BOJ
    spring
    코딩 테스트
    코딩
    Java
    프로그래밍
    Project
    jsp
    꿀팁
  • 250x250
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[GAS] 자동으로 구글 캘린더에 일정 추가하기 [구글 스프레드 시트와 캘린더 연동하기]
상단으로

티스토리툴바