搜索用户

您可以使用 Directory API 的 users.list() 方法搜索符合特定属性的用户。此方法接受 query 参数,该参数是包含一个或多个搜索子句的搜索查询。每个搜索子句都包含 3 个部分:

字段
要搜索的用户属性。例如 givenName
运算符
对数据执行的测试,用于提供匹配结果。例如,: 运算符用于测试文本属性是否包含某个值。
被测试属性的内容。例如 Jane

如需在查询中搜索多个字段,请添加每个搜索子句,并用空格分隔。该操作是隐式 AND

字段

字段 值类型 运算符 说明
未指定任何值 字符串 givenNamefamilyNameemail 中的值进行比较。
name 字符串 =, : givenNamefamilyName 的串联值。
email 字符串 =::{PREFIX}* 用户的电子邮件地址,包括别名。
givenName 字符串 =::{PREFIX}* 用户的名字。
familyName 字符串 =::{PREFIX}* 用户的姓氏。
isAdmin 布尔值 = 用户是否拥有超级用户权限。
isDelegatedAdmin 布尔值 = 用户是否拥有委派管理员权限。
isSuspended 布尔值 = 用户账号是否已暂停。
isArchived 布尔值 = 用户账号是否已封存。
im 字符串 =, : 即时通讯网络 ID。
externalId 字符串 =, : 外部 ID 值。
manager 字符串 = 用户的直接主管或上级主管的电子邮件地址。
managerId 字符串 = 用户的直属经理或管理链中上级经理的 ID。
directManager 字符串 = 用户的直属主管的电子邮件地址。
directManagerId 字符串 = 用户的直属经理的 ID。
address 字符串 : 匹配所有地址字段。
addressPoBox 字符串 =, : 邮政信箱。
addressExtended 字符串 =, : 扩展地址,例如包含子地区的地址。
addressStreet 字符串 =, : 街道地址。
addressLocality 字符串 =, : 地址所在的城镇或城市。
addressRegion 字符串 =, : 省份或州的缩写。
addressPostalCode 字符串 =, : 邮政编码。
addressCountry 字符串 =, : 国家/地区。
orgName 字符串 =, : 组织名称。
orgTitle 字符串 =, : 用户在组织中的职位。
orgDepartment 字符串 =, : 组织内的部门。
orgDescription 字符串 =, : 组织的说明。
orgCostCenter 字符串 =, : 组织的成本中心。
phone 字符串 = 用户的电话号码。
orgUnitPath 字符串 = 组织部门的完整路径。这会匹配目标下的所有组织部门链。例如,'orgUnitPath=/' 会返回组织中的所有用户。仅当 viewType=admin_view 时才能使用此字段。
isEnrolledIn2Sv 布尔值 = 用户是否注册了两步验证。
isEnforcedIn2Sv 布尔值 = 是否强制要求用户进行两步验证。
schemaName.fieldName ? ? 一种自定义用户属性,通过其架构和字段名称引用。相应字段的 indexed 属性必须设置为 true

值类型

值类型 等效的架构 fieldType 备注
字符串 STRINGEMAILPHONE 如果查询包含空格,请用英文单引号 ' 将其括起来。使用 \' 转义查询中的英文单引号,例如 'Valentine\'s Day'
布尔值 BOOL 必须具有 truefalse 值。仅支持 = 运算符。
数值 INT64DOUBLE 必须使用英文句点作为小数分隔符,不得使用千位分隔符,例如 150430.25
日期 DATE 以 YYYY-MM-DD 格式指定,例如 2001-02-15

运算符

运算符 支持的值类型 备注
= 字符串、布尔值、数字、日期 字段和值完全匹配。例如,givenName=Jane 与具有 givenName 属性 "Jane" 的所有用户匹配,但不与 "Jane Ann" 匹配。大多数字符串字段(见上文)都支持此功能。
: 字符串 该字段按顺序包含值中的完整字词。例如,包含 givenName:Jane 的查询会匹配 givenName 值为 "Jane""Jane Ann" 的用户,但不会匹配 "Janet"。针对 'givenName:Mary Ann' 的多字词查询会匹配 "Mary Ann Evans""Sarah Mary Ann" 的值,但不会匹配 "Ann Mary" 的值。大多数字符串字段(见上文)都支持此功能。
:{PREFIX}* 字符串 字段以相应值开头。例如,包含 givenName:Jane* 的查询会匹配 givenName 值为 "Jane""Jane Ann""Janet" 的用户,但不会匹配 "Sarah Jane"。仅支持有限的一组字符串字段(请参阅上文)。不支持自定义属性。
:[{MIN},{MAX}] 数字、日期 相应字段位于某个范围内。若要匹配,字段的值必须大于或等于 {MIN} 且小于 {MAX}。自定义数字属性必须指定 numericIndexingSpec 才能支持此运算符。
> 数字、日期 相应字段大于该值。自定义数字属性必须指定 numericIndexingSpec 才能支持此运算符。
>= 数字、日期 相应字段的值大于或等于指定值。自定义数字属性必须指定 numericIndexingSpec 才能支持此运算符。
< 数字、日期 相应字段的值小于指定值。自定义数字属性必须指定 numericIndexingSpec 才能支持此运算符。
<= 数字、日期 相应字段小于或等于相应值。自定义数字属性必须指定 numericIndexingSpec 才能支持此运算符。

示例

所有查询都使用 users.list 方法,该方法的 HTTP 请求类似于以下内容(为提高可读性,添加了换行符):

GET https://admin.googleapis.com/admin/directory/v1/users?domain=DOMAIN_NAME&query=QUERY_PARAMETERS

按名称搜索用户

name 查询字段会针对 givenNamefamilyName 的串联值进行测试。如果用户具有 givenName='Jane'familyName='Smith',则对 name='Jane' 的查询不会返回任何结果。

name='Jane Smith'

搜索具有包含某个值的 givenNamefamilyName 的用户

name:'Jane'

搜索与电子邮件地址前缀匹配的用户

email:admin*

搜索所有超级用户

isAdmin=true

搜索包含“经理”的 orgTitles 用户

orgTitle:Manager

搜索汇报链中具有共同主管的用户

manager='janesmith@example.com'

搜索具有相同直属经理的用户

directManager='bobjones@example.com'

搜索特定国家/地区的用户

addressCountry='Sweden'

搜索特定组织中的用户

orgName='Human Resources'

搜索特定组织中的经理

orgName=Engineering orgTitle:Manager

搜索自定义用户属性

搜索参与特定项目的所有员工

EmploymentData.projects:'GeneGnomes'

搜索特定地点的所有员工

EmploymentData.location='Atlanta'

搜索所有职位级别高于 7 的员工

EmploymentData.jobLevel>=7

搜索所有职位级别大于等于 5 且小于 8 的员工

EmploymentData.jobLevel:[5,8]

搜索所有已启用两步验证的员工

isEnrolledIn2Sv=true

搜索所有强制启用两步验证的员工

isEnforcedIn2Sv=true