Google API,drive.files.list和仅返回子文件

我正在使用NodeJS中的' googleapis '库,我试图返回当前指定文件夹中的文件和文件夹列表,但是我发现drive.files.list返回用户已被授予读取权限的所有文件。

我的目标是能够下载给定文件夹下的文件夹结构,然后以有意义的方式被NodeJS应用程序使用。

我正在使用的代码如下所示:

 const fs = require('fs'); const google = require('googleapis'); const OAuth2 = google.auth.OAuth2; const key = require('./key.json'); const jwtClient = new google.auth.JWT( key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/drive'], null ); const drive = google.drive({ version: 'v3', auth: jwtClient }); jwtClient.authorize(function (err, tokens) { if (err) { console.log(err); return; } // Make an authorized request to list Drive files. drive.files.list({ includeRemoved: false, spaces: 'drive', fileId: 'the-file-id-of-the-folder' }, function (err, resp) { if (!err) { var i; var files = resp.files; for (i=0; i<files.length; i++) { if (files[i].mimeType !== 'application/vnd.google-apps.folder') { console.log('file: ' + files[i].name); } else { console.log('directory: ' + files[i].name); } console.log(files[i]); } } else { console.log('error: ', err); } }); }); 

注意我没有尝试使用drive.files.get端点,但没有使用alt: 'media'参数,但似乎没有返回更多的元数据, drive.files.list调用。

进一步的探索导致了“ search参数”页面,这在API的v3中指示还有“字段”和“q”参数,使得列表操作变成(ES6码):

 var fileId = '0B0gS8SYjdTSsQ1ZFWU84b0hpaWM' drive.files.list({ includeRemoved: false, spaces: 'drive', fileId: fileId, fields: 'nextPageToken, files(id, name, parents, mimeType, modifiedTime)', q: `'${fileId}' in parents` }, function (err, response) { // TODO handle response }); 

请注意,有关其他元数据,请参阅:

https://developers.google.com/drive/v3/reference/files#resource