0

List Users

by
Published today

List or search the users of the Workspace account (e.g. query `orgUnitPath='/Sales' isSuspended=false` or `email:jane*`). Returns `users` and `nextPageToken`. Works with admin.directory.user or admin.directory.user.readonly.

Script gworkspace Verified

The script

Submitted by hugo989 Typescript (fetch-only)
Verified 1 hour ago
1
//native
2

3
/**
4
 * List Users
5
 * List or search the users of the Workspace account (e.g. query `orgUnitPath='/Sales' isSuspended=false` or `email:jane*`). Returns `users` and `nextPageToken`. Works with admin.directory.user or admin.directory.user.readonly.
6
 */
7
export async function main(
8
  auth: RT.Gworkspace,
9
  query: string | undefined,
10
  domain: string | undefined,
11
  order_by: "email" | "familyName" | "givenName" | undefined,
12
  sort_order: "ASCENDING" | "DESCENDING" | undefined,
13
  show_deleted: boolean = false,
14
  max_results: number = 100,
15
  page_token: string | undefined,
16
) {
17
  const url = new URL("https://admin.googleapis.com/admin/directory/v1/users")
18
  // users.list needs either domain or customer; my_customer = every domain of the admin's account
19
  if (domain !== undefined && domain !== "") {
20
    url.searchParams.append("domain", domain)
21
  } else {
22
    url.searchParams.append("customer", "my_customer")
23
  }
24
  for (const [k, v] of Object.entries({
25
    query,
26
    orderBy: order_by,
27
    sortOrder: sort_order,
28
    pageToken: page_token,
29
  })) {
30
    if (v !== undefined && v !== "") url.searchParams.append(k, v)
31
  }
32
  if (show_deleted) url.searchParams.append("showDeleted", "true")
33
  url.searchParams.append("maxResults", String(max_results))
34

35
  const response = await fetch(url, {
36
    headers: {
37
      Authorization: `Bearer ${auth.token}`,
38
      Accept: "application/json",
39
    },
40
  })
41

42
  if (!response.ok) {
43
    throw new Error(`${response.status} ${await response.text()}`)
44
  }
45

46
  return await response.json()
47
}
48