Edits history of script submission #23061 for ' List Users (gworkspace)'

  • bunnative
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    
    /**
     * List Users
     * 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.
     */
    export async function main(
      auth: RT.Gworkspace,
      query: string | undefined,
      domain: string | undefined,
      order_by: "email" | "familyName" | "givenName" | undefined,
      sort_order: "ASCENDING" | "DESCENDING" | undefined,
      show_deleted: boolean = false,
      max_results: number = 100,
      page_token: string | undefined,
    ) {
      const url = new URL("https://admin.googleapis.com/admin/directory/v1/users")
      // users.list needs either domain or customer; my_customer = every domain of the admin's account
      if (domain !== undefined && domain !== "") {
        url.searchParams.append("domain", domain)
      } else {
        url.searchParams.append("customer", "my_customer")
      }
      for (const [k, v] of Object.entries({
        query,
        orderBy: order_by,
        sortOrder: sort_order,
        pageToken: page_token,
      })) {
        if (v !== undefined && v !== "") url.searchParams.append(k, v)
      }
      if (show_deleted) url.searchParams.append("showDeleted", "true")
      url.searchParams.append("maxResults", String(max_results))
    
      const response = await fetch(url, {
        headers: {
          Authorization: `Bearer ${auth.token}`,
          Accept: "application/json",
        },
      })
    
      if (!response.ok) {
        throw new Error(`${response.status} ${await response.text()}`)
      }
    
      return await response.json()
    }
    

    Submitted by hugo989 1 hour ago