我想批量删除ClickUp上的所有文件夹:
下面是删除单个文件夹的函数:
async function deleteFolder(folderID) {
try {
await clickup.delete(`folder/${folderID}`);
logger.log(
"info",
`DELETE folder: ${folderID} - Folder deleted successfully`
);
} catch (error) {
logger.log(
"error",
`DELETE request to https://api.clickup.com/api/v2/folder/${folderID} failed. Error message: ${error.message}`
);
}
}
下面是删除所有文件夹的函数:
async function deleteAllFolders() {
const teamID = await getWorkspaces();
const spaceID = await getSpaces(teamID);
const allFolders = await getFolders(spaceID);
const promises = allFolders.folders.map(async (folder) =>
deleteFolder(folder.id)
);
await Promise.all(promises);
}
此函数使用Promise.all()
。当我调用这个函数时,只有一些文件夹被删除。哪些文件夹被删除似乎是随机的。我得到一个500错误的一些文件夹。
下面是我得到的错误日志:
{"level":"error","message":"DELETE request to https://api.clickup.com/api/v2/folder/90110574307 failed. Response code: 500, response message: Request failed with status code 500","timestamp":"2023-10-08T18:35:39.431Z"}
然而,当我在await
中使用for循环时,一切都很好:
async function deleteAllFolders() {
const teamID = await getWorkspaces();
const spaceID = await getSpaces(teamID);
const allFolders = await getFolders(spaceID);
for (const folder of allFolders.folders) {
await deleteFolder(folder.id);
}
}
为什么for循环能像预期的那样工作,而Promise.all()
版本却不能?它是否与速率限制有关,因为Promise.all()
做并发请求。ClickUp API限制为每分钟100个请求(在免费计划中)。但我最多只删除6个文件夹。
任何帮助都是感激不尽的。
1条答案
按热度按时间cuxqih211#
ClickUp API的速率限制为每分钟100个请求,然后通过使用Promise.all()函数,您可以对所有文件夹进行并发请求。
这是我的示例代码。