ディレクトリ サービス API の検索クエリで空白をワイルドカード文字と組み合わせようとすると、予期しない動作が発生しました。
コード
Directory ds = new GoogleDirectoryServiceManager().getDirectoryService("admin@randomdomain.com");
Directory.Users usersClient = ds.users();
String lastNameBuffer = term;
StringBuilder sb = new StringBuilder();
if(term.contains(" ")){
sb.append("\'");
sb.append(lastNameBuffer);
sb.append("*\'");
}else{
sb.append(lastNameBuffer);
sb.append("*");
}
queryString = "familyName:" + sb.toString();
users = usersClient.list()
.setDomain("randomdomain.com")
.setQuery(queryString)
.setMaxResults(MAX_DIRECTORY_RESULTS)
.setFields("users(name,primaryEmail,thumbnailPhotoUrl)")
.execute();
スペースを含むディレクトリを検索するために一重引用符を追加しました。以下は、 Google Directory APIからの抜粋です。
クエリに空白が含まれる場合は、単一引用符で囲みます。'Valentine\'s Day' のように、\' を使用してクエリ内の単一引用符をエスケープします。
入力
- "johns" --> Johnson という名前のすべてのユーザーを返します (
familyName: johns*
) GOOD - "van bur" --> ユーザーを返さない ( )
familyName: 'van bur*'
良くない - "van Buren" --> Van Buren という名前のすべてのユーザーを返します (
familyName: 'van buren*'
) GOOD
tl;dr
検索クエリとスペースをワイルドカードで組み合わせることはできませんか? または、ワイルドカード記号 ( *
) をエスケープする必要がありますか? ケース #2 でユーザーのリストを正常に返すには、どのクエリを使用する必要がありますか?