[Google AppsScript] Google Calendar 프로그램에 묻힌 Zoom의 URL을 찾는 방법

개요


API를 통해 Zoom의 Add-on이 Google Calendar와 연합할 때 설정한 Zoom의 회의 URL을 얻으려고 합니다.
Google AppScript의 Calendar의 Calendar Event 클래스를 사용하는 방법은 불가능합니다. 
이벤트에 대한 conference Data를 얻으려면 REST API를 사용해야 합니다.

일의 발생은...


설정된 MTG를 일람표로 웹에(HTML로) 공개하고 싶어 기존 달력에 설정된 MTG에서 제목, URL, 경로 코드 등을 따내려는 것이다.

일단 해보세요.


function myFunction() {
  const events =   CalendarApp.getDefaultCalendar().getEventsForDay(new Date());
  console.log(events[0].getLocation());

}
다만, MTG 장소로 수동으로 설정된 URL은 얻을 수 있지만, Add-on에서 설정된 URL은 떼어내지 않았다.
그나저나 애디온에 설정하면 이런 느낌이에요.

그런 함수는 없어 보이지만

없는 것 같은데.
Calendar Event 참조보아하니 없다.
참고로 getAllTagKeys()를 사용하면 meetingId,meetingParams를 얻을 수 있기 때문에 getTag("meetingParams")를 시도해 보았지만 다음과 같은 데이터만 얻을 수 있습니다.
{"topic":"テスト","type":2,"start_time":"2021-07-07T17:00:00+09:00","duration":30,"timezone":"Asia/Tokyo"}

조사해 보았다


표준 구글 메트는 사용할 수 있기 때문에 한굿의 URL이 원래 어디에 놓여 있었는지 조사했지만, 미팅팔람스 등에는 들어가지 않았다.
스케이트를 탈 수밖에 없다.calendar api hangout url에서 해봤어요.
찾은 것은 Events | Calendar API | Google Developers입니다.
여기도 hangoutLink가 있지만 conferenceData가 있으니 본명인 것 같다.
function myFunction() {
  const calendarId = "[email protected]";
  Calendar.Events.list(calendarId, {});
}
라면 괜찮은데, 이때Calendar.Events 같은 보완 기능은 효과가 없다.

서비스 추가



이렇게 Calendar API를 서비스로 컴파일해야 합니다.
  Calendar.Events.list(calendarId, {})["items"].forEach( (event) => {
    console.log(Calendar.Events.get(calendarId, event.getId()));
  });
이후list를 통해 얻고 정상적으로 얻은 경우 응답에 items가 포함되어 있기 때문에 상술한 바와 같이
// 一部省略

{ 
  htmlLink: '****',
  description: '***',
  id: '***',
  status: 'confirmed',
  summary: 'タイトル',
  conferenceData: 
   {
     entryPoints: [ [Object], [Object], [Object] ],
   }
}
conferenceData.entryPoints에 필요한 데이터가 있으니 얻으면 됩니다.
또한list 방법에 매개 변수를 제공하지 않으면 처음부터 100개를 꺼내야 하니 주의하세요.timeMin 같은 거 주면 돼요.

좋은 웹페이지 즐겨찾기