通过nextPageToken在google drive API中检索下一页的正确语法是什么



我正在开发一个应用程序,该应用程序通过向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。所以你可以使用上面的脚本

参考:

  • 文件:列表