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,,,
这样文件名的文件。 00000001
和 00000002
是 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访问它。
参考:
我有 4 个共享驱动器,其中包含名为 00000001.xml、00000002.xml ...(如 ID)的唯一文件。每个驱动器都有约 350k 个文件。
所以,我的问题是,如果我输入例如08475398 作为 ID,迭代驱动器的更快方法是什么?
我相信你的目标如下。
您有 4 个共享驱动器。
您有
00000001.xml, 00000002.xml,,,
这样文件名的文件。00000001
和00000002
是 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访问它。