ADVERTISEMENT

【Googleスプレッドシート】WordPressのREST APIから記事一覧を取得!記事管理の自動化

【Googleスプレッドシート】WordPressのREST APIから記事一覧を取得!記事管理の自動化
🛡️ 超解決

WordPressで管理している記事の一覧を、Googleスプレッドシートに自動で取り込みたいと思ったことはありませんか。手動でコピー&ペーストする作業は時間がかかり、更新のたびに同じ作業を繰り返すのは非効率です。この記事では、WordPressのREST APIを利用して記事一覧をスプレッドシートに取得し、さらに自動更新する方法を詳しく解説します。これを読めば、スプレッドシート上で記事のタイトルや公開日、ステータスなどを一元管理できるようになります。

【要点】WordPress REST APIで記事一覧をスプレッドシートに取り込む3ステップ

  • REST APIのエンドポイントを確認: サイトURLの末尾に「/wp-json/wp/v2/posts」を追加して、JSON形式の記事データを取得できるURLを用意します。
  • IMPORTDATA関数でJSONを読み込み: スプレッドシートのセルに「=IMPORTDATA(“https://あなたのサイト.com/wp-json/wp/v2/posts”)」と入力して、記事一覧の生データを取り込みます。
  • QUERYやSPLITで必要な項目だけ抽出: 取得したJSONからタイトルや日付などを抽出するために、QUERY関数やSPLIT関数を組み合わせて整形します。

ADVERTISEMENT

WordPress REST APIの概要とスプレッドシートで使うメリット

WordPress REST APIは、WordPressサイトのデータをJSON形式で外部から取得できる標準機能です。記事やページ、カテゴリーなどの情報をHTTPリクエストで取得でき、認証なしで公開情報を取得できます。これをGoogleスプレッドシートと組み合わせると、記事一覧を自動的に更新できるため、管理画面を開かなくてもスプレッドシート上で状況を把握できるようになります。特に、複数のサイトを管理している場合や、記事の公開スケジュールを一覧で確認したい場合に便利です。スプレッドシートの関数だけで完結するため、プログラミングの知識が少なくても始められます。

スプレッドシートでREST APIから記事一覧を取得する手順

1. エンドポイントURLを準備する

  1. WordPressサイトのベースURLを確認する
    まず、対象のWordPressサイトのURL(例:https://example.com)を確認します。このURLに「/wp-json/wp/v2/posts」を追加すると、記事一覧のREST APIエンドポイントになります。公開されている記事のみ取得する場合は、さらに「?per_page=100」などのパラメータを追加して取得件数を調整できます。
  2. エンドポイントURLをブラウザでテストする
    URLをブラウザのアドレスバーに入力して、JSONデータが表示されるか確認します。正常に表示されれば、スプレッドシートで利用できます。もしエラーが表示される場合は、サイトがREST APIを無効にしていないか確認してください。

2. IMPORTDATA関数でJSONデータを取得する

  1. スプレッドシートを開き、取得先のセルを選ぶ
    新しいスプレッドシートを作成し、A1セルに次の数式を入力します。=IMPORTDATA(“https://example.com/wp-json/wp/v2/posts”)
  2. データが読み込まれるのを待つ
    数式を入力すると、数秒でA列にJSONテキストが表示されます。ただし、JSON全体が1つのセルに収まるため、このままでは読みづらいです。そこでQUERY関数やSPLIT関数を使って構造化します。

3. JSONデータを整形して表にする

  1. QUERY関数でJSONを解析する
    IMPORTDATAで取得したデータは生のJSONです。GoogleスプレッドシートにはJSONをパースする専用の関数はありませんが、QUERY関数とREGEXEXTRACTを組み合わせて必要な情報を抽出できます。ただし、複雑なJSONの場合は、後述のApps Scriptを使う方法が簡単です。
  2. 代替としてApps Scriptを使う
    IMPORTDATAだけでは整形が難しい場合は、Google Apps Scriptを使用します。スクリプトエディタを開き、UrlFetchAppでAPIを呼び出し、JSONをパースしてシートに書き込みます。この方法なら、必要な項目だけを好きな順番で並べられます。

記事一覧を自動更新するための設定

手動で数式を更新するのではなく、定期的に自動更新したい場合は、Google Apps Scriptのトリガー機能を使います。以下の手順で設定してください。

  1. スクリプトエディタを開く
    スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択します。
  2. スクリプトコードを記述する
    以下のようなスクリプトを作成します。このスクリプトはAPIからデータを取得し、シートの指定範囲に書き込みます。
function fetchWordPressPosts() {
  var url = "https://example.com/wp-json/wp/v2/posts?per_page=100";
  var response = UrlFetchApp.fetch(url);
  var data = JSON.parse(response.getContentText());
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // ヘッダー行を設定
  var headers = ["ID", "タイトル", "公開日", "ステータス", "リンク"];
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);
  
  // データ行を設定
  var rows = [];
  for (var i = 0; i < data.length; i++) {
    var post = data[i];
    var row = [
      post.id,
      post.title.rendered,
      post.date,
      post.status,
      post.link
    ];
    rows.push(row);
  }
  if (rows.length > 0) {
    sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
  }
}
  1. トリガーを設定する
    スクリプトエディタの左メニューから「トリガー」アイコンをクリックし、「トリガーを追加」を選択します。関数を「fetchWordPressPosts」に設定し、時間ベースのトリガー(例:1時間ごと)を選びます。

ADVERTISEMENT

注意点とよくあるトラブル

JSONデータが正しく解析できない場合

IMPORTDATAで取得したJSONは、エスケープ文字を含むため、そのままではQUERY関数で扱いにくいです。この場合は、Apps Scriptを使うことをおすすめします。スクリプト内でJSON.parse()を使えば、きれいなオブジェクトとして扱えます。

REST APIが無効になっている場合

古いWordPressバージョンや特定のセキュリティプラグインがREST APIを無効にしている可能性があります。管理画面の設定やプラグインを確認し、REST APIを有効にしてください。通常はデフォルトで有効です。

1回のリクエストで取得できる記事数に制限がある

デフォルトでは1回のリクエストで10件しか取得できません。多くの記事を取得するには、クエリパラメータ「?per_page=100」を追加し、さらに「&page=2」のようにページを指定して複数回リクエストする必要があります。スクリプト内でループ処理を実装するとよいです。

非公開記事や下書きも取得したい場合

認証が必要な記事(下書きや非公開)を取得するには、OAuth認証またはBasic認証を設定する必要があります。認証なしでは公開記事のみ取得できます。認証が必要な場合は、アプリケーションパスワードを使う方法があります。

IMPORTDATAとApps Scriptの比較

項目 IMPORTDATA関数 Google Apps Script
設定の簡単さ 関数1つで簡単 コード記述が必要
データ整形の自由度 低い(テキスト解析が難しい) 高い(JSONを自由にパース)
自動更新の容易さ 関数の再計算に依存(不安定) トリガーで定期実行可能
大量データの取得 1つのセルに収まらない場合あり ループで複数ページ対応可能
認証が必要なデータ 対応不可 ヘッダーに認証情報を追加可能

まとめ

この記事では、WordPressのREST APIを利用してGoogleスプレッドシートに記事一覧を取得する方法を解説しました。IMPORTDATA関数を使う簡単な方法から、Apps Scriptを使った高度な自動化まで、目的に応じて選択できます。特にApps Scriptを利用すれば、公開日やステータスを一覧管理し、定期的に更新できるため、記事管理の効率が大幅に向上します。次のステップとして、カスタムフィールドやカテゴリー情報も取得するようにスクリプトを拡張してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。