【问题标题】:Getting filenames from gapi.client.drive.children.list in google drive javascript api从谷歌驱动器javascript api中的gapi.client.drive.children.list获取文件名
【发布时间】:2015-06-17 17:53:29
【问题描述】:

我正在尝试获取公共 google 驱动器文件夹中的文件列表。 我已成功通过身份验证并确实看到了文件,但我生成的子数组由仅具有字段kindid 的子对象组成。 是否可以从对象中获取任何其他字段,例如 titleselfLinkchildLink

如果我用files.list 替换children.list 来运行相同的代码,那么我会得到title 字段,但这仅适用于我的谷歌驱动器中的文件,而不是我想要的公共文件夹。我已经查看了children resourcefile resource,但无法确定是否可以从子数组中获取任何元数据

我正在使用 google 示例代码,只进行了最少的更改,

        function retrieveAllFilesInFolder(folderId, query, callback) {
            var retrievePageOfChildren = function(request, result) {
                request.execute(function(resp) {
                    result = result.concat(resp.items);
                    var nextPageToken = resp.nextPageToken;
                    if (nextPageToken) {
                        request = gapi.client.drive.children.list({
                            'folderId' : folderId,
                            'pageToken': nextPageToken
                        });
                        retrievePageOfChildren(request, result);
                    } else {
                        callback(result);
                    }
                });
            }
            var initialRequest = gapi.client.drive.children.list({
                'folderId' : folderId,
                'q' : query
            });
            retrievePageOfChildren(initialRequest, []);
        }

我是 javascript 和 stackoverflow 的新手,如果我遗漏了什么,请见谅。 谢谢。 related question

【问题讨论】:

    标签: javascript google-drive-api


    【解决方案1】:

    我想我会自己回答, 我还没有找到直接从gapi.client.drive.children.list 请求获取titleselfLinkchildLink 的方法。我决定从 children.list 获取 id 并使用带有这些 id 的 gapi.client.drive.files.get 请求来获取必要的元数据,如下所示。

            function getMetaData(fileId) {
                var request = gapi.client.drive.files.get({
                    'fileId': fileId
                });
                request.execute(function(resp) {
                    dataArray.push(resp)
                });
            }
    

    【讨论】:

      【解决方案2】:

      如果您想从某个文件夹下检索文件(包括所有元信息),您仍然可以使用 drive.files.list(),从而将文件夹 id 作为查询参数传递。这是一个例子:

          function retrieveAllFiles(callback) {
          var retrievePageOfFiles = function (request, result) {
              request.execute(function (resp) {
                  result = result.concat(resp.items);
                  var nextPageToken = resp.nextPageToken;
                  if (nextPageToken) {
                      request = gapi.client.drive.files.list({
                          'pageToken': nextPageToken
                      });
                      retrievePageOfFiles(request, result);
                  } else {
                      callback(result);
                  }
              });
          };
      
          var initialRequest = gapi.client.drive.files.list({
              q : "'<FOLDER_ID_HERE>' in parents"
          });
          retrievePageOfFiles(initialRequest, []);
      }
      

      有关搜索参数的更多信息:https://developers.google.com/drive/web/search-parameters

      【讨论】:

      • 你找到这样的搜索方法了吗?我收到此错误 > GET https://content.googleapis.com/drive/v2/files?q=fullText%20%3D%20%27foldeName%27 400 (Bad Request)
      • 与拼写错误有关:foldeName?
      猜你喜欢
      • 2017-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 2021-05-22
      • 2019-05-06
      • 1970-01-01
      相关资源
      最近更新 更多