Использование «имя содержит» для запроса Team Drive с Google Drive API - PullRequest
0 голосов
/ 04 июля 2018

Я делаю запрос на поиск всех файлов, принадлежащих определенному клиенту, в Team Drive.

На основании ответа здесь , это код:

function listFiles (){
  var client = 'client'
  var teamDriveId = 'id';
  var pageToken;
  var folders = Drive.Files.list({  
    corpora: 'teamDrive',
    supportsTeamDrives: true,
    teamDriveId: teamDriveId,
    includeTeamDriveItems: true,
    q: "title = 'data'"
  });
  if (folders.items.length !== 1) {
    Logger.log('There is a problem.');
    return;
  }
  var query = "name contains '" + client + // this client only
    "' and trashed = false and " + // not in trash 
    "not mimeType = 'application/vnd.google-apps.folder'"; // no folders
  Logger.log(query)
  var files, pageToken;
  do {
    files = Drive.Files.list({
      q: query,
      maxResults: 100,
      pageToken: pageToken,
      // required for team drive queries
      corpora: 'teamDrive',
      supportsTeamDrives: true,
      teamDriveId: teamDriveId,
      includeTeamDriveItems: true
    });
    if (files.items && files.items.length > 0) {
      for (var i = 0; i < files.items.length; i++) {
        var file = files.items[i];
        Logger.log('%s (ID: %s) (Modified: %s)', file.title, file.id, file.modifiedDate);
        }        
      }
    } else {
      Logger.log('No files found.');
    }
    pageToken = files.nextPageToken;
  } while (pageToken);
}

Если я не включаю часть запроса "name contains '" + client'", он работает нормально. Если я это сделаю, он возвращает ошибку, в которой говорится: «Неверный запрос».

Глядя на документы , я не понимаю, чем мой синтаксис отличается от того, что там указано.

Я пробовал несколько вариантов по этим направлениям:

  • "name contains 'client' and trashed = false and not mimeType = 'application/vnd.google-apps.folder'"
  • "trashed = false and not mimeType = 'application/vnd.google-apps.folder' and name contains 'client'"

Есть идеи, как это исправить?

...