2017-01-04 1 views
1

Ich benutze die "googleapis" Bibliothek in NodeJS und ich versuche, die Liste der Dateien und Ordner im aktuell angegebenen Ordner zurückgeben, aber ich finde drive.files.list zurück Alle Dateien, für die dem Benutzer Berechtigungen zum Lesen erteilt wurden.Google API, drive.files.list und nur untergeordnete Dateien zurückgeben

Mein Ziel ist es, die Ordnerstruktur unter einem bestimmten Ordner herunterladen zu können, die dann von der NodeJS-Anwendung sinnvoll genutzt werden kann.

Der Code ich verwende ist wie folgt:

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); 
    } 
    }); 
}); 

Hinweis versuche ich habe den drive.files.get Endpunkt, ohne die alt: 'media' Parameter, aber es scheint keine weiteren Metadaten, die das drive.files.list Gespräch zurückzukehren.

Antwort

5

Weitere Explorations führen zur "Search Parameters' Seite, die dort in v3 der API zeigt auch die‚Felder‘und‚q‘Parameter, so daß die Listenoperationen werden (ES6 code):

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 
}); 

Hinweis, für andere Metadaten finden Sie unter:

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

Verwandte Themen