0

Remove Group Member

by
Published today

Remove a member (by email or unique ID) from a group.

Script gworkspace Verified

The script

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

3
export type DynSelect_group_key = string
4

5
// Dropdown of every group in the account (email + name).
6
export async function group_key(auth: RT.Gworkspace) {
7
  const groups: { email: string; name: string }[] = []
8
  let pageToken = ""
9
  do {
10
    const url = new URL("https://admin.googleapis.com/admin/directory/v1/groups")
11
    url.searchParams.append("customer", "my_customer")
12
    url.searchParams.append("maxResults", "200")
13
    if (pageToken) url.searchParams.append("pageToken", pageToken)
14
    const response = await fetch(url, {
15
      headers: {
16
        Authorization: `Bearer ${auth.token}`,
17
        Accept: "application/json",
18
      },
19
    })
20
    if (!response.ok) {
21
      throw new Error(`${response.status} ${await response.text()}`)
22
    }
23
    const page = (await response.json()) as {
24
      groups?: { email: string; name: string }[]
25
      nextPageToken?: string
26
    }
27
    groups.push(...(page.groups ?? []))
28
    pageToken = page.nextPageToken ?? ""
29
  } while (pageToken)
30
  return groups.map((g) => ({ value: g.email, label: `${g.name} (${g.email})` }))
31
}
32

33
/**
34
 * Remove Group Member
35
 * Remove a member (by email or unique ID) from a group.
36
 */
37
export async function main(
38
  auth: RT.Gworkspace,
39
  group_key: DynSelect_group_key,
40
  member_key: string,
41
) {
42
  const response = await fetch(
43
    `https://admin.googleapis.com/admin/directory/v1/groups/${encodeURIComponent(group_key)}/members/${encodeURIComponent(member_key)}`,
44
    {
45
      method: "DELETE",
46
      headers: { Authorization: `Bearer ${auth.token}` },
47
    },
48
  )
49

50
  if (!response.ok) {
51
    throw new Error(`${response.status} ${await response.text()}`)
52
  }
53

54
  return { success: true }
55
}
56