Не получается список файлов при использовании Google Drive Api в JAVA с условием свойства в запросе - PullRequest
0 голосов
/ 06 мая 2019

Я интегрировал Google Drive API в свое веб-приложение и приложение для Android. Мне нужно получить список файлов Google Drive в обоих приложениях. В веб-приложении я использую следующий код.

web.jss

function getFiles() {
query = "trashed=false and '" + FOLDER_ID + "' in parents and properties has { key='tvManagementApp' and value='1' and visibility='PUBLIC'}" ;
var request = gapi.client.drive.files.list({
    "maxResults": 1000,
    "orderBy": "createdDate",
    "q": query
});

request.execute();
}

Как вы можете видеть в коде, мне нужно получить список файлов, у которых есть свойство с именем tvManagementApp со значением 1. Здесь абсолютно никаких проблем, я получаю список файлов, которые имеют это свойство.

В приложении для Android я использую следующий код.

android.java

 public Task<FileList> getFiles(String FOLDER_ID) {
    Drive.Files.List drive = null;
    try {
        drive = mDriveService.files().list().setQ("'"+FOLDER_ID+"'"+" in parents and mimeType contains 'application/vnd.google-apps.folder' and trashed=false and properties has { key='tvManagementApp' and value='1' and visibility='PUBLIC'}").setSpaces("drive").setFields("files(*)");
    } catch (IOException e) {
        e.printStackTrace();
    }
    return Tasks.call(mExecutor, drive::execute);
}

Но это не работает, я получаю следующую ошибку

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code": 400,
  "errors": [
    {
      "domain": "global",
      "location": "q",
      "locationType": "parameter",
      "message": "Invalid Value",
      "reason": "invalid"
    }
  ],
  "message": "Invalid Value"
}

Если я уберу условие свойства, оно прекрасно работает в Java. Я думаю, что есть проблема в синтаксисе запроса свойства (properties has { key='tvManagementApp' and value='1' and visibility='PUBLIC'}"). Кто-нибудь может сказать мне, что я здесь скучаю?

...