Google Calendar 연동
(API v.2)

이 문서는 더 이상 사용되지 않는 Google Calendar API v2를 다룹니다. 최신 Google Calendar API v3에 대한 정보는 여기를 참고하세요.

시작하기

동기화를 시작하기 전에 php_curl.dll 확장 기능이 활성화되어 있는지 확인하세요.

활성화되어 있지 않은 경우, 웹 서버에서 사용하는 php.ini 파일에서 다음 줄의 세미콜론을 제거하여 활성화하세요:

;extension=php_curl.dll

확장 기능이 활성화된 것을 확인한 후, 설정을 진행할 수 있습니다.

Scheduler와 Google Calendar를 동기화하려면 다음 단계를 따르세요:

  • 'gCal_proxy_v2' 패키지를 다운로드합니다.
  • 패키지의 압축을 웹 서버의 루트 디렉토리에 풉니다.

서버 측:

  • [rootFolder] gCal_proxy server에 위치한 '01_proxy.php' 파일을 텍스트 에디터로 엽니다. 이 파일에는 표준 프록시 초기화 코드가 포함되어 있습니다:
<?php
 
$email = "";
$pass = "";
$cal = "";
 
include('google_proxy.php');
$calendar = new GoogleCalendarProxy($email, $pass, $cal);
//$calendar->map("location", "details");
$calendar->connect();
 
?>
  • 3개의 변수에 값을 할당하고, 나머지 코드는 변경하지 마세요.
    설정해야 하는 변수는 다음과 같습니다:
    • $email - Gmail 계정 사용자 이름;
    • $pass - Gmail 계정 비밀번호;
    • $cal - Google Calendar의 이름.

값이 올바른지 다시 한번 확인하세요. 예를 들어, 캘린더 이름이 test@googlemail.com 인데 test@gmail.com 을 사용하면 오류가 발생합니다.

  • 변경 후 파일을 저장하세요.

클라이언트 측:

  • Scheduler가 초기화되는 HTML 파일을 엽니다. 아직 스케줄러를 설정하지 않았다면, 웹 서버의 루트 폴더에 새 HTML 파일을 만드세요.
  • 스케줄러를 일반적으로 초기화합니다 (자세한 내용은 How to Start 참고).
  • load 메서드를 사용하여 Google Calendar 이벤트를 Scheduler에 불러옵니다. 파라미터로 방금 수정한 '01_proxy.php' 파일의 경로를 지정하세요.
scheduler.load("../gCal_proxy/server/01_proxy.php");
  • 양방향 동기화를 위해 dataProcessor를 초기화합니다.

  • 스크립트 파일을 하나 더 포함하세요.

<script src="../gCal_proxy/sample/codebase/dhtmlxdataprocessor.js"></script>
  • 생성자에 동일한 '01_proxy.php' 파일의 경로를 파라미터로 전달하세요.
var dp =  scheduler.createDataProcessor("../gCal_proxy/server/01_proxy.php");
dp.init(scheduler);//'scheduler'는 스케줄러 인스턴스의 이름입니다.

동기화 설정이 완료되었습니다. [rootFolder] gCal_proxy sample에 위치한 'sample.html' 파일에서 바로 사용할 수 있는 예제를 확인할 수 있습니다.

Export

Google Calendar에서 데이터베이스로 이벤트를 내보내려면 아래 지침을 따르세요:

  1. [rootFolder] gCal_proxy server에 위치한 '03_export.php' 파일을 텍스트 에디터로 엽니다.
  2. 변수에 값을 지정하고, 나머지 코드는 변경하지 마세요.
    설정해야 하는 변수는 다음과 같습니다:
    • $email - Gmail 계정 사용자 이름;
    • $pass - Gmail 계정 비밀번호;
    • $cal - Google Calendar의 이름;
    • $db_host - MySQL 서버 호스트명 또는 IP 주소;
    • $db_user - MySQL 사용자 이름;
    • $db_pass - MySQL 비밀번호;
    • $db_name - MySQL 데이터베이스 이름;
    • $db_table - 데이터베이스 테이블 이름;
  3. 변경 사항을 저장하고 파일을 닫으세요.
  4. '03_export.php' 스크립트를 실행하세요.
  5. 스크립트 실행 후 Google Calendar의 이벤트가 지정한 데이터베이스 테이블에 저장됩니다.

'export()' 함수는 Google Calendar에서 내보낸 레코드 개수를 반환합니다.

Import

데이터베이스에서 Google Calendar로 이벤트를 가져오려면 아래 지침을 따르세요:

  1. [rootFolder] gCal_proxy server에 위치한 '02_import.php' 파일을 텍스트 에디터로 엽니다.
  2. 변수에 값을 지정하고, 나머지 코드는 변경하지 마세요. 변수는 내보내기(export)와 동일합니다.
  3. 변경 사항을 저장하고 파일을 닫으세요.
  4. '02_import.php' 스크립트를 실행하세요.
  5. 스크립트 실행 후 데이터베이스의 이벤트가 Google Calendar에 추가됩니다.

'import()' 함수는 Google Calendar에 가져온 레코드 개수를 반환합니다.

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

Google Calendar와 Scheduler는 서로 다른 필드 집합을 사용합니다. 이벤트 정보를 정확히 동기화(가져오기 또는 내보내기)하려면 두 캘린더 간에 관련 필드를 매핑해야 합니다.

기본적으로 Google Calendar와 Scheduler 간에는 다음과 같은 매핑이 존재합니다:

Google Calendar -> Scheduler

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

추가적인 Google Calendar 필드를 포함할 수도 있습니다:

필드 설명
canEdit 로그인한 사용자가 이벤트를 편집할 수 있는지 여부. 값: '0' 또는 '1'
created Google Calendar 형식의 이벤트 생성 날짜
details 이벤트 세부 정보
updated Google Calendar 형식의 이벤트 마지막 업데이트 날짜
location 이벤트 위치
status 이벤트의 현재 상태: cancelled (이벤트 취소), confirmed (이벤트 확정), tentative (임시 일정)

추가 정보를 포함하려면 다음 단계를 따르세요:

서버 측:

  • 작업에 따라 [rootFolder] gCal_proxy server에서 적절한 파일을 엽니다: 동기화는 '01_proxy.php', 가져오기는 '02_import.php', 내보내기는 '03_export.php'.
  • map() 메서드를 사용하여 원하는 필드를 연결하세요. 예를 들어, 이벤트의 위치를 text, start, end와 함께 포함하려면 다음 줄을 추가합니다:
$calendar->map("location", "place");
  • location - Google Calendar 필드 이름;
  • place - 대응되는 Scheduler 필드 이름(임의로 지정 가능).

  • 변경 후 파일을 저장하고 닫으세요.

클라이언트 측:

  • 스케줄러가 초기화되는 HTML 파일을 엽니다.
  • 스케줄러 설정에 다음을 추가하세요:

lightbox 섹션에:

scheduler.config.lightbox.sections=[
    ...
    {name:"placeField", height:50, map_to:"place", type:"textarea"}
];

map_to 값은 서버 측에서 지정한 이름(위 예시에서는 "place")과 일치해야 합니다.

  • 새 섹션의 라벨을 정의하세요:
scheduler.locale.labels.section_placeField = 'Place';

"placeField"는 섹션 이름에 맞게 변경하세요.

  • 변경 후 파일을 저장하고 닫으세요.
맨 위로