GASでワードプレスを自動投稿する方法~REST APIによる記事の新規作成手順
Google Apps Script(GAS)で、ワードプレスのAPIを利用した記事の自動投稿方法を紹介します。
WordPressのREST APIをリクエストして記事投稿するGASスクリプトから、サーバー設定やアクセス権限周りでハマりがちな注意点を解説したいと思います。
ブログを自動投稿したいニーズ
ブログ運営を行っていると、自分で記事を書いて公開するという他に、自動投稿を行いたいというニーズが湧いてきます。
- 色々なWebサイトの情報をクローリングし、それらの情報を整形した上でブログ記事を自動作成
- YoutubeのAPIから動画リストを取得し、特定ジャンルの動画をまとめたブログ記事を自動作成
上記のように自動投稿ができれば、人手をかけることなくブログ更新が可能になります。
記事を書く必要がなくなり、自分の負担を0にしてブログ運営ができるので、ブログ自動化はとても魅力的です。
GASでWordpressのブログ記事を自動投稿
ブログの中でも最も一般的であるWordpressには、自動投稿の機能を備えたAPIが用意されています。
記事タイトルや本文を用意した上で、WordpressのAPIにリクエストを行うことでブログ記事の自動投稿が可能です。
そこでWordpressのAPIと組み合わせたいのが、Google Apps Script(GAS)です。
GASでWordpressのAPIにリクエストし、運営ブログに記事タイトルや記事本文を送信するスクリプトを用意・実行すると、ワードプレスのブログ記事の自動投稿が可能になります。
さらにGASで色々なWebサイトをクローリングして情報を収集する仕組みも構築しておけば、情報収集→ブログ投稿の完全自動化のGASシステムが実現可能です。
そこで、まずワードプレスに記事を自動投稿するための環境構築と、GASスクリプトの書き方を解説します。
ワードプレス自動投稿するためのAPI設定手順
Google Apps Script(GAS)でワードプレスの自動投稿をAPIで行うためには、まずAPIを利用できるように環境構築が必要です。
そこで、まずワードプレスのAPIを利用するための設定手順を解説します。
1.ワードプレスの管理画面を開き、「プラグイン>新規追加」をクリックします。
2.右側の検索欄に「Application Passwords」を入力し、今すぐインストール&プラグインの有効化を行います。
3.インストールした「Application Passwords」で利用するユーザー設定を行うため、「ユーザー>プロフィール」をクリックします。
4.プロフィールページにApplication Passwords箇所で、ユーザー名を入力し、「Add New」ボタンをクリックし、ユーザーを新規作成します。
※ユーザー名は普段ログインで利用するユーザー名と揃えて下さい。
5.ユーザー新規作成後、ユーザー用のパスワードが表示されるので、メモを控えておきます。
※このパスワードは2度と表示されず、無くした場合はユーザーの再作成が必要です。
以上の手順でワードプレスのAPIをリクエストするための環境が完了です。
Step5で取得したワードプレスのユーザーパスワードを利用することで、GASでAPIのリクエストが実行できるようになります。
Application Passwordsでエラー表示が出た場合
Application Passwordsの設定を行った際に、以下のようなエラーメッセージが表示されることがあります。
エラーメッセージが表示されている場合は、ワードプレスのAPIにリクエストを行っても、通信が許可されません。
エラーメッセージを解決するためには、サイトのアクセス設定を行う「.htaccess」の記述を修正する必要があります。
Application Passwords導入後の.htaccess設定内容
Application Passwordsのプラグインのエラーを解消するためには、ワードプレスがあるサーバーの.htaccessのファイルに記述を追加します。
追記が必要な記述は以下の1行です。
RewriteRule .* – [E=REMOTE_USER:%{HTTP:Authorization}]
レンタルサーバーでワードプレスを利用している場合は、レンタルサーバーの管理画面から.htaccessのファイルを修正します。
今回、Application Passwordsでエラーを解消するための、スターサーバーでの.htaccessを修正方法を紹介します。
1.スターサーバーの管理ツールの画面で「FTPアカウント設定」からWebFTPにログインします。
2.WebFTPのリストから「.htaccess」のファイルを見つけ、編集アイコンをクリックします。
3.「.htaccess」ファイルが表示されるので、先程紹介した1行を赤線部分のように追加します。
※位置によってはエラーが解消しないケースもあるので、記述箇所にご注意ください。
.htaccessファイルを修正後、再度Application Passwords の画面を表示すると、エラーメッセージが表示されなくなっていれば、対応完了です。
WordPressセキュリティ設定でREST APIの有効化も
Google Apps Script(GAS)でWordpressのREST APIを使用する場合、Wordpressセキュリティ設定でREST APIを有効にする必要があります。
一般的なレンタルサーバーでWordpressをインストールすると、日本国外のIPアドレスからREST APIをリクエストできないよう制限されています。
GASの場合、スクリプトの実行元サーバーは日本国内になく、アメリカなどの国外にあります。
レンタルサーバーでWordpressセキュリティ設定でREST APIの海外アクセス制限を無効にしなければなりません。
今回、レンタルサーバーでシェアが大きいXserverとスターサーバーでのREST APIのアクセス制限を無効にする手順を紹介します。
XserverのREST API無効化手順
XserverのREST APIを無効化するためには、Xserverのサーバーパネルの管理画面で操作を行う必要があります。
1.Xserverの管理画面で、「Wordpressセキュリティ設定」を開きます。
2.Wordpressセキュリティ設定の中で、「国外IPアクセス制限設定」でREST APIアクセス制限を「OFFにする」に変更し、設定するボタンをクリックします。
以上でXserverでのREST APIの国外アクセス制限を解除できました。
スターサーバーのREST API無効化手順
続いて、レンタルサーバーのスターサーバーでのREST APIのアクセス制限を無効化する手順を紹介します。
1.スターサーバーのサーバー管理ツールで、「Wordpressセキュリティ設定」の画面を開きます。
2.REST APIのアクセス制限のところで「無効化する」ボタンをクリックし、有効→無効に変更します。
このようにWordpressのREST APIの国外アクセス制限を無効化することで、GASからの実行が可能になります。
REST APIでワードプレスの記事自動投稿がGASする準備が完了しました。
ワードプレスREST APIで新規記事作成するGASサンプルコード
Google Apps Script(GAS)でワードプレスのREST APIを利用する準備が整ったところで、ブログ記事を新規作成するGASサンプルコードを紹介します。
//ワードプレスのREST APIを利用して記事を自動投稿する関数
function postArticle() {
//自動投稿したいワードプレスサイトのURLを入力する
let siteURL = PropertiesService.getScriptProperties().getProperty('URL');
//ワードプレスのユーザー名をスクリプトプロパティから設定する
let userID = PropertiesService.getScriptProperties().getProperty('USER_ID');
//ワードプレスのパスワードをスクリプトプロパティから設定する
let pass = PropertiesService.getScriptProperties().getProperty('PASSWORD');
//自動投稿する記事のタイトルを設定する
let title = '自動投稿テスト';
//自動投稿する記事本文を設定する
let content = 'これは自動投稿です。';
//自動投稿用APIのURLをサイトURLから生成する
let apiURL = siteURL + 'wp-json/wp/v2/posts';
//APIリクエスト時にヘッダー情報で必要な認証情報を設定する
let headers = {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + Utilities.base64Encode(userID + ":" + pass)
};
//記事投稿の詳細情報を記録したオブジェクトを設定する
let arguments = {
'title': title,
'content': content,
'status': 'publish',
'comment_status': 'closed'
};
//HTTP通信でPOSTするため、記事投稿情報をjsonにしてオプション情報を設定する
let options = {
'method': 'POST',
'muteHttpExceptions': true,
'headers': headers,
'payload': JSON.stringify(arguments)
};
//URLフェッチでAPIリクエストで記事投稿を行う
let response = UrlFetchApp.fetch(apiURL, options);
//応答結果をJSON化して保存し、ログ出力
let responseJson = JSON.parse(response.getContentText());
console.log(responseJson);
}
今回のGASサンプルスクリプトでは、スクリプトプロパティで以下の3つを設定して利用します。
- ワードプレスのURL(https://○○○.com)
- Application Passwordsで作成したユーザー
- Application Passwordsで生成されたパスワード
GASのスクリプトエディタではスクリプトプロパティのGUI設定ができなくなったので、以下のコードで実行し、スクリプトプロパティを設定します。
function setVal(){
//スクリプトプロパティでキーと値を格納する
PropertiesService.getScriptProperties().setProperty("URL", "https://○○○○.com");
PropertiesService.getScriptProperties().setProperty("USER_ID", "yamamoto");
PropertiesService.getScriptProperties().setProperty("PASSWORD", "***************");
}
※スクリプトプロパティの設定詳細は以下の記事を参照ください。
スクリプトプロパティを設定後、先程のワードプレスの記事自動投稿のGASサンプルスクリプトを実行すると、ブログに記事が新規作成されて表示されます。
このようにワードプレスの記事をGASで自動投稿ができました。
GASのスクリプトで記事タイトルや記事本文の内容を工夫することで、さらに情報量を高めた有益な情報発信が自動化できます。
まとめ・終わりに
今回、Google Apps Script(GAS)でワードプレスのREST APIを使って、ブログ記事を自動投稿する方法を紹介しました。
ワードプレスのREST APIを利用できるようする環境設定から、ハマりやすいポイントについて解説してきました。
紹介したGASのワードプレス自動投稿スクリプトを改良することで、有益な情報を掲載したブログ記事の新規作成が自動化できます。
GASでスクレイピングする処理と組み合わせることで、人手のコスト0でブログ運営が可能です。
ぜひGASを使ってワードプレスによるブログ運営も自動化を試してみてください。
ディスカッション
コメント一覧
まだ、コメントがありません