Contentfulで管理しているブログ記事を一括公開する
先日の記事でContentfulで管理しているブログ記事を一括更新するようにした。
ただ、公開済みの記事の場合は、更新した後にPublishを実行しないと記事が反映されないため、記事の一括公開スクリプトを作ることにした。
一括更新時に合わせて公開処理を行う手もあるが、一括置換以外にも細かい調整を加えたかったため、更新と公開でスクリプトを分けることにした。
const contentful = require("contentful-management");
const sleep = (msec) => new Promise((resolve) => setTimeout(resolve, msec));
(async () => {
const client = contentful.createClient({
accessToken: process.env.ACCESS_TOKEN,
});
const space = await client.getSpace(process.env.SPACE_ID);
const master = await space.getEnvironment("master");
const entries = await master.getEntries({
content_type: "post",
limit: 1000,
});
const length = entries.items.length;
for (let i = 0; i < length; i++) {
const entry = entries.items[i];
if (entry.isUpdated()) {
await entry.publish();
console.log(`published: ${entry.sys.id}`);
await sleep(200);
} else {
console.log(`skipped: ${entry.sys.id}`);
}
}
})();
公開済みの記事に更新があるかは entry.isUpdated()
で取得できるので更新があった場合のみ publish()
を行うようにした。