WordPressの公開記事をスプレッドシートに一覧化【GAS × REST API で自動取得】

WordPressで投稿した記事を一覧で管理したいと思ったことはありませんか?

管理画面からでは見づらかったり、過去記事の整理や分析をしたいときに不便だったりしますよね。

そこで今回は、Googleスプレッドシート × Google Apps Script(GAS)× WordPress REST API を使って、

WordPressの公開記事を自動でスプレッドシートに一覧化する方法をご紹介します。

自社メディアの公開記事管理はもちろん、複数ブログの更新チェックや記事整理にも活用できます。

テンプレートを使って、すぐに使える形で始めたい方は、以下の記事もぜひご覧ください。

目次

完成イメージ

  • A2セルに対象サイトのURLを手入力(例:https://example.com)
  • A4行目にヘッダーとして「タイトル(リンク付き)」、B4に「公開日」を自動入力
  • A5行目以降に記事を一覧表示

今回のスクリプトでは、最大200件までの公開記事を取得できます。
(WordPress REST APIの仕様により、1ページあたり100件が上限のため、2ページ分を取得)

より多くの件数を取得したい場合は、ページ数を自動で増やす仕組みに変更することで対応可能です。

取得件数の制限がないテンプレート版(有料)は、こちらの記事でご紹介しています。

WordPressのREST APIとは?

WordPressは標準で「REST API」という機能を持っています。

これは、記事やカテゴリなどの情報を外部からJSON形式で取得できる仕組みです。

たとえば、以下のようなURLにアクセスすると、WordPressに投稿された記事が一覧で取得できます:

https://example.com/wp-json/wp/v2/posts

example.com を対象のサイトに変更します)

JSONというフォーマットで返ってくるため、プログラムでの活用に便利です。

JSON(ジェイソン)について

JSON(ジェイソン)は、データをわかりやすい形で表現するテキスト形式のことです。

(JSON形式=表のようなデータがテキストで整理されているもの)

たとえば、記事のタイトルやURL、公開日などの情報が以下のような形で返ってきます:

{
  "title": { "rendered": "記事タイトル" },
  "date": "2024-04-01T10:00:00",
  "link": "https://example.com/記事URL"
}

「どんなデータがどの値か」ひと目で分かるのが特徴で、プログラムでの処理に適しています。

✅ REST APIで公開記事を取得できる条件

WordPress REST API を使えば、誰でもそのサイトの「公開記事」を取得できます。
ただし、以下の条件を満たしている必要があります。

  • 投稿が「公開」ステータスになっている
  • REST APIが有効になっている(WordPressの初期状態では有効)
  • セキュリティプラグイン等でAPIアクセスが制限されていない
REST APIで公開記事を取得できないケース

REST APIは便利な機能ですが、すべてのWordPressサイト・投稿が取得できるわけではありません。
以下のような場合は、公開記事であっても取得できなかったり、一覧に表示されなかったりすることがあります。

  • 下書きや非公開投稿(認証が必要です)
  • API自体が無効化されている
  • カスタム投稿タイプで show_in_rest: false の設定がされている場合

GASの実行手順

STEP
スプレッドシートの準備

スプレッドシートを開き、シート名を「公開記事一覧」にします。

GASの実行はこのシート名を対象にします。

(必要に応じてシート名、スクリプトをご変更ください)

続いて、A2セルに取得したいWordPressサイトのURLを入力します。

(例:https://84office.jp

STEP
GASエディタを開く

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
スクリプトの作成

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

function getWordPressPosts_All() {
  const sheetName = "公開記事一覧";
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);

  if (!sheet) {
    Logger.log(`シート「${sheetName}」が見つかりません。作成してください。`);
    return;
  }

  const domain = sheet.getRange("A2").getValue();
  if (!domain) {
    Logger.log("A2セルにWordPressのドメインを入力してください。");
    return;
  }

  sheet.getRange(4, 1, 1, 2).setValues([['タイトル(リンク付き)', '公開日']]);

  const data = [];

  for (let page = 1; page <= 2; page++) {
    const endpoint = `${domain}/wp-json/wp/v2/posts?status=publish&per_page=100&page=${page}`;
    try {
      const response = UrlFetchApp.fetch(endpoint);
      const posts = JSON.parse(response.getContentText());

      for (const post of posts) {
        const titleWithLink = `=HYPERLINK("${post.link}", "${post.title.rendered.replace(/"/g, '""')}")`;
        data.push([titleWithLink, post.date]);
      }
    } catch (e) {
      Logger.log(`Page ${page} でエラー: ${e}`);
      break;
    }
  }

  const lastRow = sheet.getLastRow();
  if (lastRow > 4) {
    sheet.getRange(5, 1, lastRow - 4, 2).clearContent();
  }

  if (data.length > 0) {
    sheet.getRange(5, 1, data.length, 2).setValues(data);
  }
}
スクリプトの説明
シートを取得する
const sheetName = "公開記事一覧";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  • スプレッドシート内の「公開記事一覧」という名前のシートを取得します。
  • 存在しない場合は処理を中断するように、後でチェックします。
ドメイン(対象サイトのURL)を取得する
const domain = sheet.getRange("A2").getValue();
  • セルA2に入力されたWordPressのドメイン(例:https://example.com)を取得します。
  • 空の場合は処理を中断します。
ヘッダー行を出力する
sheet.getRange(4, 1, 1, 2).setValues([['タイトル(リンク付き)', '公開日']]);
  • A4セルに「タイトル(リンク付き)」、B4セルに「公開日」をセットします。
  • 記事一覧の上部にヘッダーとして表示されます。
データ保存用の配列を準備する
const data = [];
  • 取得した記事データ(タイトルと公開日)を一時的に保存する配列です。
  • 最後にまとめてシートに出力します。
REST APIから記事を取得する(最大200件)
for (let page = 1; page <= 2; page++) {
  const endpoint = `${domain}/wp-json/wp/v2/posts?status=publish&per_page=100&page=${page}`;
  ...
}
  • WordPress REST API にアクセスし、公開記事を1ページ100件ずつ、最大2ページまで取得します。
  • 取得先のURLを動的に生成しています。
APIレスポンスを処理する
const response = UrlFetchApp.fetch(endpoint);
const posts = JSON.parse(response.getContentText());
  • APIにアクセスして、記事情報を取得します。
  • JSON形式の文字列をオブジェクトに変換しています。
記事データを配列に追加する
for (const post of posts) {
  const titleWithLink = `=HYPERLINK("${post.link}", "${post.title.rendered.replace(/"/g, '""')}")`;
  data.push([titleWithLink, post.date]);
}
  • 記事タイトルにURLを埋め込んで、クリックできるリンクに変換します。
  • 公開日とあわせて data 配列に追加します。
エラー処理(ページが存在しない場合など)
} catch (e) {
  Logger.log(`Page ${page} でエラー: ${e}`);
  break;
}
  • APIエラー(存在しないページなど)が起きたとき、ログに出力して処理を終了します。
既存の出力エリアをクリアする
const lastRow = sheet.getLastRow();
if (lastRow > 4) {
  sheet.getRange(5, 1, lastRow - 4, 2).clearContent();
}
  • 前回の出力結果(5行目以降)が残っている場合、それを削除します。
  • 新しいデータだけをきれいに表示するための処理です。
シートに記事一覧を出力する
if (data.length > 0) {
  sheet.getRange(5, 1, data.length, 2).setValues(data);
}
  • 5行目から、取得した記事のタイトル(リンク付き)と公開日を出力します。
STEP
スクリプトを保存

スクリプトを書いたら、好きな名前を付けて保存します。

(例:「WP公開記事一覧」)

STEP
スクリプトを実行

スクリプトを実行して、ワードプレスの公開記事を取得します。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

STEP
公開記事の一覧化 完了

スプレッドシートに記事一覧が表示されます。

まとめ

WordPressのREST APIを使えばWordPressサイトの公開記事を取得可能です。

さらにGoogle Apps Script(GAS)と組み合わせることで、スプレッドシートに公開記事を自動で一覧化できます。

この方法を使って、WordPressの記事管理をもっと快適にしてみませんか?

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。

GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。

また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次