【问题标题】:Google Drive API Node.js Search files in specific locationGoogle Drive API Node.js 在特定位置搜索文件
【发布时间】:2017-01-09 12:26:11
【问题描述】:

我正在尝试使用 API 在云端硬盘上的特定文件夹中查找文件。这样做的原因是我的文件可以在多个文件夹中具有相同名称的副本。这是我为检查文件是否存在而编写的内容的片段,但结果查询是未定义的。有人有想法吗?

function checkFile(filename, auth, folderId){
var service = google.drive('v3');
console.log("folderId: " + folderId);
var objectExists = false;
var fetchPage = function(pageToken, pageFn, callback) {
  service.files.list({auth: auth,
    resource: { parents: [ folderId ] },
    q: "mimeType='application/pdf' and trashed=false",
    fields: 'nextPageToken, files(id, name)',
    spaces: 'drive',
    pageToken: pageToken,
  }, function(err, res) {
    if(err) {
      callback(err);
    } else {
        console.log(res)
        if(res.files != undefined){
            res.files.forEach(function(file) {
              if(file.name == filename)
              {
                console.log('Found file: ', file.name, file.id);
                objectExists = true;
              }

              });
              if (res.nextPageToken) {
                pageFn(res.nextPageToken, pageFn, callback);
              } else {
                callback();
              }
        }
        else {
            callback();
        }

    }
  });
};
fetchPage(null, fetchPage, function(err) {
  if (err) {
    // Handle error
    console.log(err);
  } else {
        if(!objectExists)
            createFile(filename, auth, folderId)
  }
});

}

【问题讨论】:

    标签: javascript search directory drive


    【解决方案1】:

    通过在字段中添加更多数据来解决它:

    fields: 'nextPageToken, files(id, name),files/parents',
    

    接着添加一个额外的校验值:

    if(file.name == filename && file.parents[0] == folderId)
    

    【讨论】:

      【解决方案2】:

      嗨,Akorna,我发现你的问题与我的搜索有关,如果我要求在 Nodejs 中搜索 GOOGLE 驱动 API 的初学者级代码,你会介意吗? 我已经准备好了骨架代码,并通过服务帐户为其配置了驱动器。

      const { google } = require('googleapis') ;
      const readLine = require('readline');
      const path = require('path');
      const fs = require('fs');
      const dotenv = require('dotenv');
      const { file } = require('googleapis/build/src/apis/file');
      dotenv.config();
      
      const KEYFILEPATH = path.join(__dirname, '/credentials.json');
      
      const SCOPES = ['https://www.googleapis.com/auth/drive', 'profile'];
      
      const auth = new google.auth.GoogleAuth({
          keyFile: KEYFILEPATH,
          scopes: SCOPES
        });
      
      const drive = google.drive({version: 'v3', auth});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-18
        相关资源
        最近更新 更多