JavaScript - 遍历共享驱动器以通过输入字符串获取文件(Google Apps 脚本)

JavaScript - Iterate over shared drives to get file by input string (Google Apps Script)

我有 4 个共享驱动器,其中包含名为 00000001.xml、00000002.xml ...(如 ID)的唯一文件。每个驱动器都有约 350k 个文件。

所以,我的问题是,如果我输入例如08475398 作为 ID,迭代驱动器的更快方法是什么?

我相信你的目标如下。

  • 您有 4 个共享驱动器。

  • 您有00000001.xml, 00000002.xml,,,这样文件名的文件。 0000000100000002 是 ID。

  • 您想使用 ID 搜索文件。

    So, my question is, if I input e.g. 08475398 as an ID, what would be the faster way to iterate over drives?

  • 您想使用 Google Apps 脚本实现此目的。

在这种情况下,下面的示例脚本怎么样?

示例脚本:

此脚本使用驱动器 API。所以,please enable Drive API at Advanced Google services。并且,请将您要搜索的ID设置为id。而且,运行 脚本。

并且,请设置您要搜索的 4 个驱动器 ID。

function myFunction() {
  const id = "08475398"; // Please set the ID.
  const driveIds = ["###driveId1###", "###driveId2###", "###driveId3###", "###driveId4###"]; // Please set 4 Drive IDs you want to search.

  const q = `title contains '${id}' and trashed = false`;
  const fields = "nextPageToken,items(id,title,driveId,mimeType)";
  let fileList = [];
  let pageToken = "";
  do {
    const { items, nextPageToken } = Drive.Files.list({ pageSize: 1000, corpora: "allDrives", includeItemsFromAllDrives: true, supportsAllDrives: true, q, fields, pageToken });
    if (items.length > 0) fileList = [...fileList, ...items];
    pageToken = nextPageToken;
  } while (pageToken);
  const res = fileList.filter(({driveId}) => driveIds.includes(driveId));
  console.log(res)
}
  • 当此脚本为运行时,从您可以访问的所有共享驱动器中搜索文件名包括id的文件并作为文件列表检索。检索到的文件列表使用 driveIds 进行过滤。作为示例,在这种情况下,检索 id,title,driveId,mimeType 的文件元数据。关于文件元数据,请根据实际情况修改。

  • 如果要使用检索到的文件列表访问文件,可以使用文件ID访问它。

参考: