n8n으로 다음 주 구글캘린더 일정 자동 메일 발송하기

소개

  • 매주 토요일 밤 10시에 다음 주(월~일) 구글 캘린더에 등록된 내 일정을 정리해서 이메일로 자동 리마인드 받기 입니다.

  • 스터디에서 n8n 실습 해본 뒤 n8n 연습 + 실제적으로 일정관리에도 도움이 되는 작업이라 만들어보게 되었습니다.

진행 방법

어떤 도구를 사용했고, 어떻게 활용하셨나요?

  • n8n

  • Google Calendar API

  • Gmail (이메일 전송)

  • Code 노드 (날짜 계산용 JavaScript 사용)

워크플로우 구성 순서:

  1. Schedule Trigger
    매주 토요일 밤 10시에 워크플로우가 자동으로 실행되도록 설정합니다.

    • Trigger interval: Weeks

    • Trigger day: Saturday

    • Trigger time: 22:00

  2. Code 노드: 다음 주 날짜 계산

// 오늘 날짜 가져오기
const now = new Date();

// 다음 주 월요일 00:00 계산
const nextMonday = new Date(now);
nextMonday.setDate(now.getDate() + ((8 - now.getDay()) % 7)); // 다음 월요일
nextMonday.setHours(0, 0, 0, 0);

// 다음 주 일요일 23:59 계산
const nextSunday = new Date(nextMonday);
nextSunday.setDate(nextMonday.getDate() + 6);
nextSunday.setHours(23, 59, 59, 999);

return [{
  json: {
    start: nextMonday.toISOString(),
    end: nextSunday.toISOString()
  }
}];
  1. Google Calendar 노드: 일정 불러오기 (Get many events)

    • Resource: Event

    • Operation: Get Many

    • After: {{$json["start"]}}

    • Before: {{$json["end"]}}

  2. Code노드: 일정 텍스트 포맷 가공

const events = items;
const summary = events.map(e => {
  const event = e.json;
  const title = event.summary || "제목 없음";
  const time = event.start?.dateTime || event.start?.date || "시간 미정";
  return `📅 <strong>${title}</strong><br>🕒 ${time}`;
}).join('<br><br>');

return [{
  json: {
    body: `<p>다음 주 일정입니다:</p><br>${summary}`
  }
}];

  1. Gmail 노드 이메일을 보내기

  • To: 내 이메일 주소

  • Subject: "다음 주 일정 자동 리마인드"

  • Body: {{$json["body"]}}

결과와 배운 점

  • 공유받은 캘린더의 일정도 정리 가능해서 좋았습니다.

  • 다음주 날짜 계산 할 때 캘린더노드에서 구현이 안되어 코드에서 다음주 시간범위를 설정하여 일정을 조회하도록 구성했습니다.

  • 단순 반복 업무의 경우 n8n의 트리거 + 구글 API + 코드 조합으로 자동화를 통해 업무 편의성을 높일 수 있는 방법이 무한할 것 같은 기대감! 이 들었습니다.

앞으로의 계획

  • 여러개의 캘린더의 일정을 모아서 하나의 메일로 받아보고 싶어요.

  • 궁극적으로는 단순 일정을 넘어서 "할 일(To-do) 목록, 후속 계획 자동 생성" 까지 포함된 진짜 ‘나만의 워크플로우’를 만들고 싶습니다.

도움 받은 글 (옵션)

에듀테크 스터디장 도로시J 님 : 초간단 n8n 자동화 실습

1
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요