我正在开发一个应用程序,该应用程序通过向nodeJ的API发出请求来列出google驱动器的文件,以获取驱动器中的所有文件。我需要通过这个API请求另一组文件,但我不知道使用从以前的drive.files.list({})
收到的nextPageToken请求下一页文件的正确方法是什么。我在文档中搜索了一下,但找不到关于这个用例的任何示例。下面是我正在使用的代码,但这个代码只是再次返回相同的10个文件&再一次
..other code here..
drive.files.list({
orderBy: 'name',
q: "",
nextPageToken:req.body.pageToken, // req.body.pageToken is nextPageToken got in previous requests
pageSize: 10,
fields: 'nextPageToken, files(id, name)',
}, (err, resp) => {
..other code here..
我相信你的目标和情况如下。
- 您想使用Node.js的googleapi检索所有文件作为Google Drive的列表
- 您已经能够使用驱动器API检索文件列表。
- 您的
drive
可用于从Google Drive检索文件列表
- 您的
修改点:
nextPageToken
就是pageToken
- 最大
pageSize
为1000。在这种情况下,当使用1000时,可以减少驱动器API的使用次数 - 为了使用
nextPageToken
,在这个答案中,我建议使用do while循环
当您的脚本被修改时,它变成如下。
修改的脚本:
async function main(auth) {
const drive = google.drive({ version: "v3", auth });
const fileList = [];
let NextPageToken = "";
do {
const params = {
// q: "", // In this case, this is not required.
orderBy: "name",
pageToken: NextPageToken || "",
pageSize: 1000,
fields: "nextPageToken, files(id, name)",
};
const res = await drive.files.list(params);
Array.prototype.push.apply(fileList, res.data.files);
NextPageToken = res.data.nextPageToken;
} while (NextPageToken);
console.log(fileList.length); // You can see the number of files here.
}
drive.files.list
返回Promise。所以你可以使用上面的脚本
参考:
- 文件:列表