letlistFiles=(auth, folderpath, savepath, filelist) => { //Google Drive API const drive = google.drive({version: 'v3', auth}); //query setting for parent directories let folderqueryspec=null; folderpath.map((folder)=>{ if(!folderqueryspec)folderqueryspec="name='"+folder+"'"; else folderqueryspec+=" or name='"+folder+"'"; }); //delete file list fs.unlink(filelist, (err) => { if(err)console.log(err); });
//get parent directory drive.files.list({ q: "trashed=false and mimeType = 'application/vnd.google-apps.folder' and ("+folderqueryspec+")", pageSize: 5, fields: 'nextPageToken, files(id, name, trashed, parents)', }, (err, res) => { if (err) returnconsole.log('The API returned an error(Folder was not found): ' + err);
//query setting for source directories const parentFolders = res.data.files; let parentfolderqueryspec; parentFolders.map((folder)=>{ if(!parentfolderqueryspec)parentfolderqueryspec="'"+folder.id+"' in parents"; else parentfolderqueryspec+=" or '"+folder.id+"' in parents"; }); //get source directories drive.files.list({ q: "trashed=false and mimeType = 'application/vnd.google-apps.folder' and ("+parentfolderqueryspec+")", fields: 'nextPageToken, files(id, name, trashed, parents, mimeType)', }, (err, res) => { if (err) returnconsole.log('The API returned an error: ' + err); parentfolders = res.data.files; if (parentfolders.length) { parentfolders.map((folder) => { //get file object under the source directories drive.files.list({ q: "trashed=false and (mimeType contains 'text/' or mimeType contains 'image/') and '"+folder.id+"' in parents", pageSize: 1000, fields: 'nextPageToken, files(id, name, trashed, parents, mimeType, copyRequiresWriterPermission, webContentLink)', }, (err, res) => { //save a file list let markdownfiles=res.data.files; markdownfiles.map((file) => { fs.appendFile(filelist, file.name + " " + file.id + " " + file.mimeType + " " + folder.name + " " + folder.id + "\n", (err) => { if(err)console.log(err); }); }); }); }); } else { console.log('No files found.'); } }); }); }
let folderpath=['hexo','source']; //Google Drive folder let savepath='/var/www/hexo/source'; //Hexo web sources let filelist='/var/www/hexo/tmp/sourcefiles.list'; //file list