Google Calendar와의 통합

패키지 다운로드 here.

소개

이 장에서는 Scheduler와 Google Calendar를 동기화하는 방법을 설명합니다.

동기화는 양방향으로 작동하므로, Scheduler나 Google Calendar에서 이루어진 모든 업데이트는 두 곳 모두에 반영됩니다.

  • 동일한 이벤트가 두 앱 모두에서 수정된 경우, 가장 최근의 변경 사항이 동기화됩니다.
  • 한 캘린더에서 이벤트를 삭제하면 두 곳 모두에서 삭제됩니다.
  • 동기화는 기본 Google Calendar에만 제한되며, 보조 캘린더는 포함되지 않습니다.
  • Scheduler와 Google Calendar의 모든 이벤트가 함께 동기화됩니다—특정 이벤트만 선택적으로 동기화할 수는 없습니다.
  • 기본적으로 Scheduler는 Google Calendar에서 이벤트의 텍스트와 기간(시작 및 종료 시간)만 가져옵니다. 추가적인 이벤트 정보가 필요하다면 별도로 가져올 수 있습니다. 자세한 내용은 아래를 참고하세요.

시작하기

통합을 설정하려면 다음 단계를 따르세요:

  1. Google API 콘솔에 로그인하세요: https://console.cloud.google.com/cloud-resource-manager.
  2. "Create new project" 버튼을 클릭하여 "Google apis" 화면을 엽니다.
  3. "Services" 탭에서 "Calendar API" 서비스를 활성화하세요.
  4. "API Access" 탭으로 이동하여 "Create an OAuth2.0 Client ID"를 클릭합니다. 그러면 "Create Client ID" 폼이 열립니다.
  5. 폼을 작성한 후 "Next"를 클릭하여 진행하세요.
  6. "Service account" 옵션을 선택하고 "Create client ID"를 클릭하세요. 그러면 개인 키 파일, Client ID, Email 주소가 생성됩니다—이 정보는 나중에 필요하니 저장해 두세요.
  7. 앱에서 사용할 Google Calendar에 로그인한 후, Google API 콘솔(1단계)에서 생성한 Email 주소와 캘린더를 공유하세요.
  8. 캘린더 설정에서 캘린더 ID를 찾아 저장하세요.

서버 측:

  1. "data.php"라는 이름의 PHP 파일을 다음 코드로 생성하세요:
    <?php
     
    include('../src/google_proxy.php');
     
    $calendar = new GoogleCalendarProxy(
        "<account>@developer.gserviceaccount.com",
        "<account>.apps.googleusercontent.com",
        file_get_contents("<key>"),
        "<calendar id>"
    );
     
    $calendar->connect();
    ?>

여기서

  • <account>는 Google API 콘솔에 로그인할 때 사용한 Email 주소입니다.
  • <key>는 개인 키 파일의 경로입니다.
  • <calendar_id>는 Google Calendar 설정에서 얻은 캘린더 ID입니다.

클라이언트 측:

1. Scheduler가 초기화된 HTML 파일을 열거나, 일반적인 방법으로 설정하세요 (How to Start 문서를 참고).

2. load 메서드를 사용하여 Google Calendar 이벤트를 scheduler에 불러옵니다. 첫 번째 파라미터는 'data.php' 파일의 경로이고, 두 번째는 데이터 포맷으로 'json'을 지정해야 합니다.

scheduler.load("./data.php", "json");

3. dataProcessor를 초기화하여 양방향 동기화를 활성화하세요 (읽기 전용 접근만 필요하다면 이 부분은 건너뛰세요).

var dp =  scheduler.createDataProcessor("./data.php");
dp.init(scheduler);
dp.setTransactionMode("POST", false);

이벤트와 관련된 추가 정보를 전달하는 방법

기본적으로 Scheduler는 Google Calendar의 모든 필드를 읽지만, 네 가지 필드만 적극적으로 처리합니다. 나머지 필드는 읽기 전용으로 간주됩니다.

Google Calendar와 Scheduler 필드 간의 매핑은 다음과 같습니다:

Google Calendar -> Scheduler

  • id -> id
  • title -> text
  • startTime -> start_date
  • endTime -> end_date

추가 속성을 처리하려면 패키지에 포함된 "src/google_proxy.php" 파일을 수정할 수 있습니다
(download link).

맨 위로