Google Drive API v3 найти все файлы в папке и дочерних - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть клиент Google API для скрипта java. Я создал все запросы. Последний запрос в моем приложении это получить все файлы в папках и дочерних папках. Это запрос получить все файлы в родительской папке.

   let files = await obj.staticProperty.gapi.client.drive.files.list({
                'q': `'${object['folder']['id']}' in parents`,
                'pageSize': 10
            })

Как я могу получить также все файлы в дочерних папках?

1 Ответ

1 голос
/ 17 февраля 2020

Я делаю это рекурсивно, обратите внимание, что у меня есть обратный вызов, который собирает файлы - я использую Redux с React, поэтому он просто отправляет действие, которое добавляет группу файлов в состояние каждый раз, когда метод получает больше файлов:

function getAllFiles(bearerToken, pageToken = undefined, q = undefined,
                     callback = (files) => console.log('No callback provided',
                         files),
                     onComplete = () => console.log('No onComplete provided'),
) {
  axios.get('https://www.googleapis.com/drive/v3/files', {
    params: {
      corpora: 'user',
      fields: 'files(id,name,size,mimeType,parents,webViewLink,trashed),nextPageToken',
      // q: 'mimeType = \'application/vnd.google-apps.folder\'',
      q: q,
      pageSize: 1000,
      pageToken: pageToken,
    },
    headers: {
      'Accept': 'application/json',
      'Authorization': 'Bearer ' + bearerToken,
    },
  }).then((result) => {
    callback(result.data.files);
    if (result.data.nextPageToken) {
      getAllFiles(bearerToken, result.data.nextPageToken, q, callback,
          onComplete);
    } else {
      onComplete();
    }
  }).catch((error) => {
    console.error('Error folders result', error);
  });
}

Это из кода моей "Панели диска" на https://drivedashboard.saisols.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...