LaneyGuide
연동

Google 캘린더 동기화 기준

예약 Query, 일정 필드, 공개 범위와 취소 정책이 Google 캘린더에 적용되는 방식을 확인하세요.

레퍼런스검증일 2026. 8. 17.관리 Laney 제품팀

이 레퍼런스는 Google 캘린더에 보낼 예약과 고객 정보 범위를 결정할 때 사용합니다. 설정 뒤에는 동기화 지연, 누락, 중복과 개인정보가 포함된 일정 수를 확인하세요.

동기화 방향과 범위

Google 캘린더 연동은 Laney에서 Google 캘린더로 보내는 단방향 동기화입니다. Laney는 sourceQuery가 선택한 예약을 원하는 일정 집합으로 봅니다. 5분 주기로 이 집합과 연결한 Google 기본 캘린더를 비교합니다.

  • 새로 선택된 예약은 일정으로 만듭니다.
  • 이미 선택된 예약의 시간이나 내용이 바뀌면 같은 일정을 갱신합니다.
  • Query에서 빠진 예약은 Laney가 만든 일정을 삭제합니다.
  • Google 캘린더에서 직접 바꾼 값은 다음 동기화 때 Laney 값으로 돌아옵니다.
  • 사용자가 직접 만든 일정과 다른 연결이 만든 일정은 바꾸지 않습니다.
  • 동기화가 한 번 지연되면 다음 실행에서 현재 예약 집합을 다시 맞춥니다.

계정과 조직 범위

각 Google 캘린더 계정은 계정을 만든 조직의 예약만 읽습니다. 연결 권한과 Google 기본 캘린더도 그 계정에만 적용됩니다. 한 Google 기본 캘린더를 여러 조직에 연결할 수 없습니다.

여러 지점을 운영한다면 지점마다 계정을 만들고 서로 다른 Google 계정을 연결하세요. 연결 절차는 Google 캘린더 연결하기를 참고하세요.

설정 필드

필드기본값동작
calendarId연결 시 결정승인한 Google 계정의 기본 캘린더입니다. 직접 바꾸지 마세요.
timeZoneGoogle 기본 캘린더 시간대IANA 시간대 이름을 사용합니다. 예시는 Asia/Seoul입니다.
summary예약모든 일정 제목의 앞부분입니다.
customerNamemaskedfull, masked, none 중 고객 이름 표시 방식을 정합니다.
visibilityprivateprivate는 세부 정보를 제한하고 default는 캘린더 공유 설정을 따릅니다.
defaultDurationMinutes60종료 시각이 없는 예약의 길이입니다. 5분부터 1,440분까지 입력할 수 있습니다.
locationField빈 값Google 일정의 위치로 사용할 예약 필드 경로입니다.
detailFields빈 객체설명 레이블과 예약 필드 경로를 연결하는 JSON 객체입니다.
includeNotesfalsetrue이면 예약 메모를 일정 설명에 넣습니다.
cancelPolicydeletedelete는 일정을 지우고 keep은 취소 표시를 남깁니다.
sourceQuery모든 예약 상태Google 캘린더와 맞출 전체 예약 집합을 선택합니다.

Query 기준

sourceQuery는 일반 자동화와 같은 Query 문법을 사용합니다. 이 Query에서 선택되지 않은 예약은 Google 캘린더에서도 없어져야 하는 대상으로 판단합니다. 전체 비교가 필요하므로 limit과 offset은 사용할 수 없습니다.

다음 예시는 지금 이후의 보류 중과 확정됨 예약을 선택합니다. 고객 이름을 일정에 쓰려면 customer_id 관계도 포함하세요.

{
  "where": {
    "status": { "in": ["pending", "confirmed"] },
    "starts_at": { "gte": "now" }
  },
  "embed": {
    "customer_id": {}
  }
}

취소 일정을 남기는 keep 정책을 사용한다면 cancelled 상태도 Query에 포함하세요. Query가 먼저 취소 예약을 제외하면 동기화는 그 일정을 삭제합니다. 필터와 관계 조건은 자동화 조회 문법 레퍼런스를 참고하세요.

예약과 일정 필드

Google 일정Laney 예약규칙
제목summary, 고객 이름기본 예시는 예약 · 홍*동입니다.
시작starts_attimeZone의 현지 시각으로 보냅니다.
종료ends_at값이 없으면 defaultDurationMinutes를 더합니다.
설명상태, detailFields, 메모상태는 항상 포함하고 메모는 동의한 경우에만 포함합니다.
위치locationField의 값빈 값이면 위치를 보내지 않습니다.
공개 범위visibility기본값은 private입니다.
바쁨 여부예약 상태와 cancelPolicy일반 일정은 바쁨이며 남겨 둔 취소 일정은 한가함입니다.

detailFields에는 일정 설명의 레이블과 예약 필드 경로를 JSON으로 입력합니다.

{
  "서비스": "custom.treatment",
  "담당자": "custom.staff_name"
}

위치는 같은 경로 형식을 사용합니다. 예를 들어 locationField에 custom.room을 입력하면 해당 사용자 필드의 값을 Google 일정 위치에 넣습니다.

취소 정책

값취소 예약이 Query에 있을 때예약이 Query에서 빠질 때
deleteGoogle 일정을 삭제합니다.Google 일정을 삭제합니다.
keep제목 앞에 [취소]를 붙이고 한가함으로 표시합니다.Google 일정을 삭제합니다.

취소 기록을 Google 캘린더에 남겨야 한다면 keep을 선택하고 cancelled 상태를 Query에 포함하세요. 예약 이력의 원본은 취소 정책과 관계없이 Laney에 남습니다.

개인정보와 알림

  • 고객 이름은 기본적으로 가운데 글자를 가립니다. none을 선택하면 이름을 보내지 않습니다.
  • 예약 메모는 기본적으로 보내지 않습니다. 자유 입력 메모에 민감한 정보가 없는지 먼저 확인하세요.
  • private 일정의 실제 공개 범위는 Google 캘린더의 공유 권한에도 영향을 받습니다.
  • 고객을 참석자로 추가하지 않으며 일정 생성, 변경과 취소 이메일을 보내지 않습니다.
  • Laney가 만든 일정을 구분하는 숨은 속성은 일반 일정 설명에 표시되지 않습니다.

사용하는 표준과 Google API

계정 승인은 OAuth 2.0 웹 서버 흐름을 사용합니다. 사용자가 자리에 없어도 정기 동기화를 계속할 수 있도록 오프라인 접근 권한을 승인받습니다.

Laney는 Google이 문서화한 Calendar API 권한 중 일정 조회와 편집, 캘린더 목록 조회 범위만 요청합니다. 일정 생성과 갱신은 Events API를 사용합니다. Laney가 만든 일정만 찾기 위해 비공개 확장 속성을 사용합니다.

이 연결은 iCalendar RFC 5545 형식의 구독 링크가 아닙니다. 인증된 Calendar API가 예약의 생성, 변경과 취소를 같은 일정에 반영합니다.

이 페이지에서