2016-06-10 20 views
2

似乎已經有similar question了,但我需要一個解決方案(請繼續閱讀)以當前用戶身份進行身份驗證。獲取所有同事的日曆清單

我在嘗試製作一個簡單的Google Apps腳本應用程序,使用Google日曆檢查您的同事(在Google Apps for Work域中)是否當前正在開會。

該腳本將作爲當前用戶執行。爲此,我需要能夠獲取當前用戶(不僅是他們訂閱的用戶)可用的所有日曆的列表,這些列表可以在標準日曆Web應用的下拉列表中找到:

google calendar look up coworkers' calendars

CalendarApp.getAllCalendars()得到所有日曆用戶擁有或訂閱,這不是我所需要。我希望在我的Google Apps for Work網域(例如與整個公司共享)中向我提供可用的完整列表,即使我沒有訂閱它們。

CalendarList REST API可用於Apps腳本通過Advanced Calendar Service具有相同的限制。

Calendar for Work Features還提到域範圍內的授權委派

訪問域的日曆作爲一個應用程序

應用程序可以訪問域擁有日曆,無需用戶 憑據,如果認證通過一個服務帳戶。服務 帳戶必須具有使用全域範圍授權 代表團的必要訪問權限。

這可能會得到我所需要的,但我不希望我的腳本以管理員權限運行,我希望它以當前訪問它的用戶身份進行身份驗證。

有沒有辦法?

回答

0

您需要訂閱您要查看的日曆(並在完成查看時取消訂閱)。這裏有點演示:

var calendar = "[email protected]"; 

function getCalInfo(){ 
    var cal = CalendarApp.getCalendarById(calendar); 
    Logger.log(cal); 
    Logger.log(typeof cal); 
    var unsubscribe = false; 
    if(cal==null){ 
    try{ 
     Logger.log("subscribing"); 
     cal = CalendarApp.subscribeToCalendar(calendar); 
     unsubscribe = true; 
    } 
    catch(err){ 
     Logger.log(err); 
    return; 
    } 
    } 
    if(cal){ 
    Logger.log(cal.getTimeZone()); 
    } 
    if(unsubscribe){ 
    Logger.log("unsubscribing"); 
    cal.unsubscribeFromCalendar(); 
    } 
} 
+0

但我怎麼得到我沒有訂閱的所有日曆列表? 'calendar'變量來自你的代碼片段? –

+0

@DmitryPashkevich這是不可能的,如果你想獲得域中所有日曆的列表,你可以嘗試獲取你所有用戶的列表(作爲管理函數getUsers())var users = AdminDirectory.Users。 list({domain:「domain.ext」,fields:「users/primaryEmail」}); Logger.log(users); }郵政編碼中的「calendar」var是用戶的電子郵件地址 – Harold

+0

請參閱我的問題是:「我不希望我的腳本以管理員權限運行,我希望它以當前訪問它的用戶身份進行身份驗證。」 –

相關問題