以前、はてなブログのスプシの出力を実施した。
Wordpressで書いている地域メディアブログの記事を一覧化したいのでやってみた
WordPress側のREST APIで posts を取得(認証不要な公開記事だけならそのままいける)
const WP_ENDPOINT = 'https://XXXXXXXXX/wp-json/wp/v2/posts';
const PER_PAGE = 50; // 1〜100 の範囲
function importWpPosts() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('posts') || ss.insertSheet('posts');
sheet.clearContents();
sheet.getRange(1, 1, 1, 3).setValues([['title', 'url', 'date']]);
// まず page=1 を叩いて総ページ数を取得
const firstRes = UrlFetchApp.fetch(`${WP_ENDPOINT}?per_page=${PER_PAGE}&page=1&_fields=title,link,date`);
const headers = firstRes.getAllHeaders();
const totalPages = Number(headers['X-WP-TotalPages'] || headers['x-wp-totalpages'] || 1);
let page = 1;
let row = 2;
while (page <= totalPages) {
const url = `${WP_ENDPOINT}?per_page=${PER_PAGE}&page=${page}&_fields=title,link,date`;
const res = UrlFetchApp.fetch(url);
const data = JSON.parse(res.getContentText());
if (data.length === 0) break; // 念のための保険
const values = data.map(p => [
p.title?.rendered || '',
p.link || '',
p.date || ''
]);
sheet.getRange(row, 1, values.length, 3).setValues(values);
row += values.length;
page++;
}
}
振り返り
思ったよりもサクッと一覧化が出来た。また一覧化する事で思ったよりも記事数が少なく感じ、更新の意欲&もっと頑張ろうという気になった。 はてなブログ&Wordpressで運用しているので、定期的に取得して閲覧して振り返っていきたい。