2017-01-04 4 views
1

Я использую библиотеку 'googleapis' в NodeJS, и я пытаюсь вернуть список файлов и папок в текущей папке, но вместо этого обнаруживаю, что drive.files.list возвращает все файлы, которым пользователю были предоставлены разрешения для чтения.Google API, 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 вызов.

ответ

5

Дальнейшее исследование приводит к "Search Parameters' странице, которая указывает на v3 в API есть также„“и„“параметры д полей, таким образом, что операции список становится (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

Смежные вопросы