GASと連携してWordPressで自動投稿する方法
GASとWordPressを連携する準備
GASを使ってWordPressに記事を自動投稿・更新するには、まずWordPressへアクセスするための情報を用意します。
最初に必要なのは次の3つだけ。
- WordPressサイトURL
- WordPressユーザー名
- アプリケーションパスワード
サイトURL
まず、投稿したいWordPressサイトのURLを確認します。
例えば、読者の方が今読まれている本サイトであれば、
https://earthpg.school/
がサイトURLにあたります。
ユーザー名
次に、WordPressにログインするユーザー名を確認します。
WordPress管理画面の左メニューから、以下の順番で確認できます。

- WordPressダッシュボードにログインします。
- 「ユーザー」を開きます。
- 投稿に使いたいユーザーを確認します。
つまり、いつもログインで使ってるあのユーザー名ですね。
アプリケーションパスワード
最後に、コレがいちばんの山場です。
通常のログインパスワードをそのままGASに書くのではなく、外部連携用の専用パスワードを発行して使います。
その「専用パスワード」がアプリケーションパスワードというですね。
- WordPressダッシュボードにログインします。
- 「ユーザー」から「プロフィール」を開きます。
- 下の方にある「アプリケーションパスワード」を探します。
- 名前に「test」などと入力します。
- 「新しいアプリケーションパスワードを追加」をクリックします。
- 表示されたパスワードをコピーして保存します。

アプリケーションパスワードは、一度しか表示されません。
あとで確認できないため、発行したらすぐにメモしておきましょう。
GASを使ってWordPressの投稿を自動更新する方法
準備が整ったら、次のスクリプトを書いてみましょう。
function updateWordPressPost() {
const siteUrl = "https://your-wordpress-site.com";
const username = "your_username";
const appPassword = "xxxx xxxx xxxx xxxx xxxx xxxx";
const url = siteUrl + "/wp-json/wp/v2/posts/";
const payload = {
title: "新しいタイトル",
content: "ここには更新したい内容を入れます。",
status: "publish"
};
const token = Utilities.base64Encode(username + ":" + appPassword);
const options = {
method: "post",
contentType: "application/json",
headers: {
Authorization: "Basic " + token
},
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, options);
Logger.log(response.getResponseCode());
Logger.log(response.getContentText());
}
UrlFetchApp.fetch()を使用してWordPressのAPIにアクセスします。
必要な情報をpayloadにまとめ、POSTリクエストとして送信します。
それぞれ、以下のように置き換えてください。
| コード内の項目 | ここに入れるもの | 入力例 |
|---|---|---|
siteUrl |
WordPressサイトのURL | https://example.com |
username |
WordPressのユーザー名 | earthpg |
appPassword |
発行したアプリケーションパスワード | abcd efgh ijkl mnop qrst uvwx |
なお、コード内の status: "publish" は、記事を公開状態で投稿・更新するという意味です。
そのため、このまま実行するとWordPress上で記事が公開されます。
まずテストしたい場合や、すぐに公開したくない場合は、次のように draft に変更してください。
status: "draft"
draft にすると、記事は下書きとして保存されます。
最初は安全のため、status: "draft" で動作確認するのがおすすめです。
status: "draft" に変更しよう。
試しに実行してみると、

きましたね。
すっぽり入ってます。