我想通過顯示一些管理目錄資料的應用腳本向 GMail 撰寫一個插件。
但我希望這個插件可以在與我的管理員帳戶不同的帳戶上作業。例如,我每天使用我的 [email protected] 來查看電子郵件,有時我使用我的 [email protected] 帳戶來管理管理內容。
有沒有辦法以 [email protected] 身份使用管理服務,同時以[email protected] 身份登錄?
uj5u.com熱心網友回復:
回答:
假設這個其他用戶沒有管理員權限,您唯一的選擇是使用具有域范圍委派的服務帳戶來模擬您的管理員帳戶:
- 執行 Google Workspace 域范圍的授權
作業流程:
- 創建一個服務帳戶。
- 按照本指南授予服務帳戶域范圍的委派,以便它可以用來模擬您域中的任何帳戶:在這種情況下,是您的帳戶。
- 匯入并使用庫OAuth2 for Apps Script,以便在您的 Apps Script 專案中使用服務帳戶。
- 使用UrlFetchApp呼叫所需的 API,使用來自服務帳戶的訪問令牌。
代碼示例:
例如,如果您想呼叫 Directory API 的users.get從當前執行此操作的用戶那里檢索資料,您可以執行以下操作:
function getService() {
const service = OAuth2.createService("Service account")
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(SERVICE_ACCOUNT_PRIVATE_KEY)
.setIssuer(SERVICE_ACCOUNT_EMAIL)
.setSubject(IMPERSONATED_EMAIL)
.setPropertyStore(PropertiesService.getScriptProperties())
.setParam('access_type', 'offline')
.setScope('https://www.googleapis.com/auth/admin.directory.user')
return service;
}
function getActiveUserData() {
const service = getService();
if (service.hasAccess()) {
const userKey = Session.getActiveUser();
const url = `https://admin.googleapis.com/admin/directory/v1/users/${userKey}`;
const options = {
headers: {
'Authorization': "Bearer " service.getAccessToken(),
'Content-Type': 'application/json'
},
muteHttpExceptions: true
}
const resp = UrlFetchApp.fetch(url, options);
const userData = JSON.parse(resp.getContentText());
return userData;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410893.html
標籤:
上一篇:onChange指定標簽谷歌表格
下一篇:日月互換?
