从google drive javascript api中的gapi.client.drive.children.list获取文件名

时间:2014-03-02 18:32:02

标签: javascript google-drive-api

我正在尝试获取公共google驱动器文件夹中的文件列表。 我已成功通过身份验证并查看了文件,但生成的子数组包含仅包含字段kindid的子对象。 是否可以从对象中获取titleselfLinkchildLink等其他字段?

如果我使用children.list替换files.list运行相同的代码,那么我会获得title字段,但这只是我的google驱动器中的文件,而不是我想要的公用文件夹。我已经浏览了children resourcefile resource,但无法确定是否有可能从子数组中获取任何元数据

我正在使用谷歌示例代码,只需最少的更改,

        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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如果要从某个文件夹下检索文件(包括所有元信息),您仍然可以使用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