質問するログイン新規登録

Q&A

0回答

1712閲覧

GASからWordPressにアイキャッチ画像付きで自動投稿したい

fujimido

総合スコア1

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2021/07/16 02:26

0

0

解決したいこと

GASからWordPressにアイキャッチ画像付きで自動投稿したいです。
アイキャッチ画像をつけなければ自動投稿できましたが、つけるとエラーになります。

発生している問題・エラー

エラー SyntaxError: Unexpected token < in JSON at position 0
at postImage(コード:88:27)
at postArticle(コード:24:15)

該当するソースコード

GAS

1 2function setVal() { 3 //スクリプトプロパティでキーと値を格納する 4 PropertiesService.getScriptProperties().setProperty("URL", "https://xxxxxxxx.com/"); 5 PropertiesService.getScriptProperties().setProperty("USER_ID", "userid"); 6 PropertiesService.getScriptProperties().setProperty("PASSWORD", "xxxxxxxx"); 7} 8 9//ワードプレスのREST APIを利用して記事を自動投稿する関数 10function postArticle() { 11 setVal(); 12 //自動投稿したいワードプレスサイトのURLを入力する 13 let siteURL = PropertiesService.getScriptProperties().getProperty('URL'); 14 //ワードプレスのユーザー名をスクリプトプロパティから設定する 15 let userID = PropertiesService.getScriptProperties().getProperty('USER_ID'); 16 //ワードプレスのパスワードをスクリプトプロパティから設定する 17 let pass = PropertiesService.getScriptProperties().getProperty('PASSWORD'); 18 //自動投稿する記事のタイトルを設定する 19 let title = '自動投稿テスト'; 20 //自動投稿する記事本文を設定する 21 let content = 'これは自動投稿です。'; 22 //アイキャッチ画像 postImage(siteURL, userID, pass, 'アイキャッチ画像にしたい画像URL'); 23 var imageID = postImage(siteURL, userID, pass, 'http://xxxxxxx.com/wp-content/uploads/2021/02/IMG_9456-2.jpg'); 24 //アップロードした結果の画像IDを取得 25 imageID = Number(imageID["id"]) 26 27 //自動投稿用APIのURLをサイトURLから生成する 28 let apiURL = siteURL + 'wp-json/wp/v2/posts'; 29 //APIリクエスト時にヘッダー情報で必要な認証情報を設定する 30 let headers = { 31 'Content-Type': 'application/json', 32 'Authorization': 'Basic ' + Utilities.base64Encode(userID + ":" + pass) 33 }; 34 //記事投稿の詳細情報を記録したオブジェクトを設定する 35 let arguments = { 36 'title': title, 37 'content': content, 38 'featured_media': imageID, 39 'status': 'publish', 40 'comment_status': 'closed' 41 }; 42 //HTTP通信でPOSTするため、記事投稿情報をjsonにしてオプション情報を設定する 43 let options = { 44 'method': 'POST', 45 'muteHttpExceptions': true, 46 'headers': headers, 47 'payload': JSON.stringify(arguments) 48 }; 49 //URLフェッチでAPIリクエストで記事投稿を行う 50 let response = UrlFetchApp.fetch(apiURL, options); 51 //応答結果をJSON化して保存し、ログ出力 52 let responseJson = JSON.parse(response.getContentText()); 53 console.log(responseJson); 54} 55 56/* 57関数概要 58 wordpressに画像をアップロードし、その結果を返す 59引数 60 siteUrl サイトのURL 61 user API認証するためのユーザー名 62 pass API認証するためのパスワード 63 imageUrl 画像URL 64 65戻り値 66 アップロード結果 67*/ 68function postImage(siteUrl, user, pass, imageUrl) { 69 70 var apiUrl = siteUrl + 'wp-json/wp/v2/media'; 71 72 var headers = { 73 'Content-Type': 'image/png', 74 'Content-Disposition': 'attachment;IMG_9456-2.jpg', 75 'accept': 'application/json', 76 'Authorization': 'Basic ' + Utilities.base64Encode(user + ":" + pass) 77 }; 78 79 var options = { 80 'method': 'POST', 81 'muteHttpExceptions': true, 82 'headers': headers, 83 'payload': UrlFetchApp.fetch(imageUrl) 84 }; 85 86 var response = UrlFetchApp.fetch(apiUrl, options); 87 //ここでエラーになる!2021-07-14 88 var responseJson = JSON.parse(response.getContentText()); 89 90 return responseJson; 91} 92 93

自分で試したこと

ここに問題・エラーに対して試したことを記載してください。

このプログラムは以下の2つのサイトを参考にしました。
//GASでワードプレスを自動投稿する方法~REST APIによる記事の新規作成手順
//https://auto-worker.com/blog/?p=2475

//GASを使ってアイキャッチ画像付でWordPressに自動投稿する方法
//https://arukayies.com/gas/wordpress-rest-api/postreport-thumbnail
function setVal() {

デバッグ内容を見ると、response.getContentText()が空です。

イメージ説明

###利用環境
windows10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問