609 字
3 分鐘
#6 將AAD使用者清單匯到 Google Sheet — 簡單入門Azure AD
2023-04-02
無標籤

雖然Azure AD有後台可以查看使用者資料,但載入滿慢的,有些隱藏欄位也顯示不出來,本篇會說明如何定時將Azure AD的使用者清單匯入到Google Sheet上進行管理。


構想#

身為一個AD管理員,我希望可以知道每位使用者的建立日期、密碼修改日期、帳號是否啟用等資訊,因此我們想辦法將Azure AD的這些資料匯入到Google Sheet上。


開通Azure AD權限#

上一篇作法,我們需要在Azure後台註冊一個應用程式,並給予讀取所有使用者的權限User.Read.All,然後申請一組Secret。


Google Sheet#

我們先建立一個Google Sheet,並點選擴充功能的Apps Script。

貼上以下程式碼,並輸入相關資訊與使用者欄位。選擇update function,按一下執行,就會開始到Azure AD取得使用者資料填入Google Sheet。使用者有哪些欄位可以用請看微軟文件

var tenant_id = '<目錄識別碼>';
var client_id = '<應用程式識別碼>';
var client_secret = '<用戶端密碼>';
var sheet_name = '<工作表名稱>';
// 要讀取的使用者欄位
var cols = {
'displayName': '姓名',
'userPrincipalName': '信箱',
'lastPasswordChangeDateTime': '密碼修改日',
'createdDateTime': '帳號建立日',
'accountEnabled': '帳號啟用'
};
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('功能')
.addItem('更新清單', 'update')
.addToUi();
}
function update() {
// 取得AAD token
var url = `https://login.microsoftonline.com/${tenant_id}/oauth2/v2.0/token`;
var options = {
method: 'POST',
payload: {
client_id: client_id,
client_secret: client_secret,
scope: 'https://graph.microsoft.com/.default',
grant_type: 'client_credentials',
}
}
var response = UrlFetchApp.fetch(url, options);
var token = JSON.parse(response.getContentText())["access_token"];
// 讀取AAD使用者清單
var url = 'https://graph.microsoft.com/v1.0/users?$select=' + Object.keys(cols).join(',') + '&$top=999';
var options = {
method: 'GET',
headers: { Authorization: 'Bearer ' + token }
}
var response = UrlFetchApp.fetch(url, options);
var items = JSON.parse(response.getContentText())["value"];
// 寫入Google Sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName(sheet_name);
s.getRange('A:Z').clearContent();
s.appendRow(Object.values(cols));
items.forEach(function (item) {
var result = [];
for (const i of Object.keys(cols)) {
result.push(item[i]);
}
s.appendRow(result);
});
}

另外在上面有個onOpen的function,會在Google Sheet上新增一個功能的分類,按下「更新清單」就能夠更新。

這樣就可以在Google Sheet查看到使用者資料了


定時更新#

我希望每天可以自動更新這個表單,我們在Apps Script頁面點選觸發條件,右下角新增觸發條件。

填入以下資訊,就可以每天自動更新了。


結語#

Google Sheet整合Google Apps Script,可以玩出很多有趣的應用,之後可以再來說名更多功能。