scrapboxのproject情報を一括して取得するUserScript
2021-06-19
21:57:07 includeJoinedがfalseのときに重複を除けていなかった
15:55:57 データを取得できなかったproject(=存在しないか閲覧できないproject)は除くようにした
15:46:15 参加しているprojectのうちprojectIdsにないprojectを除けるようにした
code:script.js
export async function getProjectInfo(projectIds, {includeJoined = true} = {}) {
const chunkNum = Math.floor(projectIds.length / 100) + 1;
.map(async index => {
const params = new URLSearchParams();
projectIds.slice(index * 100, 100 + index * 100).forEach(id => params.append('ids', id));
const res = await fetch(/api/projects?${params.toString()});
const {projects} = await res.json();
return projects;
}));
const projects = result.flat();
if (includeJoined) {
// 重複を取り除く
return ids.map(id => projects.find(project => project.id === id));
} else {
// projectIdsにあるprojectのみ返す
.filter(id => projectIds.some(_id => _id === id))
.map(id => projects.find(project => project.id === id));
}
}