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

What is correct syntax of retrieving next page in google drive API through nextPageToken

我正在开发一个应用程序,它通过向 nodeJs 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 的 googleapis 将所有文件检索为 Google 驱动器的列表。
  • 您已经能够使用驱动器 API 检索文件列表。
    • 您的 drive 可用于从您的 Google 驱动器中检索文件列表。

修改点:

  • nextPageTokenpageToken.
  • 最大pageSize为1000个。这种情况下,当使用1000个时,可以减少Drive 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 returns 答应。所以你可以像上面那样使用脚本。

参考: