前提・実現したいこと
GASからWordPressに記事を自動投稿するプログラムを作っています。
投稿時に以下をつけたいです。
・アイキャッチ画像
・タグ
・カテゴリ
下のページを参照して自動投稿プログラムを作りましたがアイキャッチ画像とタグが入りません。
カテゴリは入ります。
「GASを使ってアイキャッチ画像付でWordPressに自動投稿する方法」
https://arukayies.com/gas/wordpress-rest-api/postreport-thumbnail
発生している問題・エラーメッセージ その1 アイキャッチ画像が入らない
var responseJson = JSON.parse(response.getContentText());
この関数の実行時にエラーとなります。
エラーメッセージ SyntaxError: Unexpected token < in JSON at position 0 postImage @ コード.gs:90 postReport_thumbnail @ コード.gs:31
発生している問題・エラーメッセージ その2 タグが設定できない
アイキャッチ画像の処理(31,33,38行)をコメントアウトして実行したところ
エラーはなくなり、自動投稿できました。
その際、カテゴリは設定できましたが、タグが設定できません。
エラーメッセージは出ません。正常終了します。
該当のソースコード
GAS
11 //GASでワードプレスを自動投稿する方法~REST APIによる記事の新規作成手順 22 //https://auto-worker.com/blog/?p=2475 33 44 //GASを使ってアイキャッチ画像付でWordPressに自動投稿する方法 55 //https://arukayies.com/gas/wordpress-rest-api/postreport-thumbnail 66 77 88 /* 99 関数概要 1010 wordpressに記事を投稿する処理(アイキャッチ画像付) 1111 戻り値 1212 実行結果 1313 */ 1414 function postReport_thumbnail() { 1515 1616 var siteUrl = 'https://xxxx2020.com/'; 1717 var user = 'xxxx2020'; 1818 var pass = 'BIIa UHbE knYr f7DE JMy6 xxxx'; 1919 var title = '自動投稿テスト(アイキャッチ画像付)'; 2020 var content = 'これは自動投稿です。(アイキャッチ画像付)'; 2121 var categories = [23,49]; 2222 var tags = [26,42,1,100,99]; 2323 2424 var apiUrl = siteUrl + 'wp-json/wp/v2/posts'; 2525 2626 var headers = { 2727 Content-Type': 'application/json', 2828 Authorization': 'Basic ' + Utilities.base64Encode(user + ":" + pass) 2929 }; 3030 //画像をアップロードする 3131 var imageID = postImage(siteUrl, user, pass, 'http://xxxx2020.com/wp-content/uploads/2021/02/IMG_9456-2.jpg'); 3232 //アップロードした結果の画像IDを取得 3333 imageID = Number(imageID["id"]) 3434 3535 var arguments = { 3636 title': title, 3737 content': content, 3838 featured_media': imageID, 3939 status': 'publish', 4040 comment_status': 'closed', 4141 categories':categories, 4242 tag':tags 4343 } 4444 4545 var options = { 4646 method': 'POST', 4747 muteHttpExceptions': true, 4848 headers': headers, 4949 payload': JSON.stringify(arguments) 5050 }; 5151 5252 var response = UrlFetchApp.fetch(apiUrl, options); 5353 var responseJson = JSON.parse(response.getContentText()); 5454 5555 return responseJson; 5656 } 5757 5858 5959 ///////////////////////////////////////////////// 6060 /* 6161 関数概要 6262 wordpressに画像をアップロードし、その結果を返す 6363 引数 6464 siteUrl サイトのURL 6565 user API認証するためのユーザー名 6666 pass API認証するためのパスワード 6767 imageUrl 画像URL 6868 戻り値 6969 アップロード結果 7070 */ 7171 function postImage(siteUrl, user, pass, imageUrl) { 7272 7373 var apiUrl = siteUrl + 'wp-json/wp/v2/media'; 7474 7575 var headers = { 7676 Content-Type': 'image/png', 7777 Content-Disposition': 'attachment;filename=IMG_9456-2.jpg', 7878 accept': 'application/json', 7979 Authorization': 'Basic ' + Utilities.base64Encode(user + ":" + pass) 8080 }; 8181 8282 var options = { 8383 method': 'POST', 8484 muteHttpExceptions': true, 8585 headers': headers, 8686 payload': UrlFetchApp.fetch(imageUrl) 8787 }; 8888 8989 var response = UrlFetchApp.fetch(apiUrl, options); 9090 var responseJson = JSON.parse(response.getContentText()); 9191 9292 return responseJson; 9393 }
試したこと 問題1 アイキャッチ画像
1.取得する画像を以下の場所に変えてみましたが、同じエラーでした。
・google photoのアドレス
・プログラムのあるURL
2.すでにアイキャッチ画像として登録されているものを設定した場合は登録できました。
(プログラム修正箇所)
31,33行をコメントアウト
38 featured_media': 35
試したこと 問題2 タグ
最初は数値を直接指定していました。
22行目 var tags = 26;
これを 配列にしてみましたが状況は変わりませんでした。
補足情報(FW/ツールのバージョンなど)
Windows 10 Home
WordPress 5.7.2
プラグイン
Application Passwords バージョン 0.1.3