2012-07-26 3 views
0

나는 Google 스크립트를 통해 자신을 만드는 디스플레이로 내 Google 검색에서 clunky google 캘린더 일정 목록보기를 바꾸려고합니다.2 개의 Google 캘린더를 병합하여 순서대로 이벤트를 표시하려면 어떻게해야합니까?

페이지에서 일정 세부 정보를 볼 수 있지만 여러 개의 일정을 표시해야합니다. 항목이 페이지에서 올바른 순서로 표시되고 일정별로 그룹화되지 않도록하려면 어떻게해야합니까?

내가 할 수있는 중 하나

내가 여러 캘린더를 통합, 스크립트를 실행할 때마다 임시 달력을 만들 (주 - 나는 어떤 일정 옵션을 만들어 볼 수 없습니다)

또는 스프레드 시트로 정보를 덤프, 거기에서 일종의 작업을 수행하십시오.

또는 어떻게 든 시간이 아닌 일정에 따라 캘린더가 실행됩니다.

스프레드 시트 중 하나가 가장 좋은 옵션이라고 생각합니다. 다른 생각은 없습니까?

iCal 파일을 스프레드 시트에 자동으로 복사하는 간단한 방법이 있습니까?

조지

답변

0

PHP와 젠드 Gdata는 라이브러리 옵션이있는 경우, 각 달력의 이벤트를 통해 캘린더 목록 공급하고 루프를 잡아 배열로 넣을 수 있습니다. 그런 다음 시작 시간순으로 다음과 같이 정렬 할 수 있습니다.

 function cmp($a, $b) 
    { 
     if( $a->when[0]->startTime == $b->when[0]->startTime){ return 0 ; } 
     return ($a->when[0]->startTime < $b->when[0]->startTime) ? -1 : 1; 
    } 

    uasort($allEvents,'cmp'); 
0

나는 이것을 많이 처리했습니다. 특히 내 캘린더 중 둘 이상에서 이벤트에 대한 게스트 목록 이메일을 보낼 때. 아래 함수는 일정 및 시작 및 종료 시간 배열을 가져 와서 고유 한 CalendarEvent 개체의 단일 배열로 바꿉니다.

here 코드 버전을 실행할 수 있습니다. 또한 거기에 댓글이 달린 것을 발견하게 될 것입니다.

정렬 조각은 가장 흥미롭게 여겨지는 것으로, byStart 함수에 들어 있습니다. 배열 정렬에 대한 자세한 내용은 MDN Array.Sort Reference에서 확인할 수 있습니다. byStartCalendarEvent의 모든 배열에서 작동합니다.

캘린더 관리의 특성으로 인해 자바 스크립트에서 사용할 수있는 반복 함수를 사용하면 이러한 효과를 얻을 수 있습니다.

function mergeCalendarEvents(calendars, startTime, endTime) { 

    var params = { start:startTime, end:endTime, uniqueIds:[] }; 

    return calendars.map(toUniqueEvents_, params) 
        .reduce(toSingleArray_) 
        .sort(byStart_); 
} 

function toCalendars_(id) { return CalendarApp.getCalendarById(id); } 

function toUniqueEvents_ (calendar) { 
    return calendar.getEvents(this.start, this.end) 
       .filter(onlyUniqueEvents_, this.uniqueIds); 
} 

function onlyUniqueEvents_(event) { 
    var eventId = event.getId(); 
    var uniqueEvent = this.indexOf(eventId) < 0; 
    if(uniqueEvent) this.push(eventId); 
    return uniqueEvent; 
} 

function toSingleArray_(a, b) { return a.concat(b) } 

function byStart_(a, b) { 
    return a.getStartTime().getTime() - b.getStartTime().getTime(); 
} 
: MDN 여기 Iteration Methods

그것이 더 많은 정보를 가지고