带有查询字符串的搜索文件在google drive api上不起作用

时间:2013-07-17 04:10:26

标签: java google-app-engine google-drive-api

以下是我用来查找包含志愿者的文件列表的代码。

private static List<File> retrieveAllFiles(Drive service) throws IOException {
    List<File> result = new ArrayList<File>();
    Files.List request = service.files().list().setQ("Volunteers");
    System.out.println("Request size:" + request.size());
    do {
        try {
            FileList files = request.execute();
            System.out.println("Request files size:" + files.size());
            result.addAll(files.getItems());
            request.setPageToken(files.getNextPageToken());
        } catch (IOException e) {
            System.out.println("An error occurred: " + e);
            request.setPageToken(null);
        }
    } while (request.getPageToken() != null &&
             request.getPageToken().length() > 0);

    return result;
}

执行时返回

[s~sakshumweb-hrd/3.368839385999923807].<stdout>: An error occurred: com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 OK
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "location" : "q",
    "locationType" : "parameter",
    "message" : "Invalid Value",
    "reason" : "invalid"
  } ],
  "message" : "Invalid Value"
}

它有什么问题。

1 个答案:

答案 0 :(得分:3)

当您想要“查找包含志愿者的文件列表”时,我不确定您要搜索的内容,但是您应该指定要从哪个文件资源中搜索您的查询。

例如,如果您要在标题中搜索包含“志愿者”的文件,则您的代码应为service.files().list().setQ("title contains 'Volunteers'");,或者如果您要搜索文件的标题和内容,以查看它们是否包含“志愿者” “,您的代码应该看起来像service.files().list().setQ("fullText contains 'Volunteers'"); 请仔细查看search parameters documentation。它将使您更好地了解如何搜索文件。