Zoho CRM から WordPressのREST API を使ってコンテンツをPOSTする方法
Deluge Script
Zoho CRMからWordPressに投稿してみた!
Zoho CRMのカスタム関数を使ってWordPressに投稿をしてみました。今回は社内の備忘録として、残すような形ですが、参考になる方がいれば幸いです。
WordPressは、RES API version 2.0となります。加えて、Deluge Scriptも、2020年10月時点で最新となります。
今回書いたスクリプトはこれ
GASとかでも可能とは思うが、今回サーバーを自らで用意することなく、このようなことがZoho内部だけで実現できることが改めてすごいと思った。
/*WPのユーザーIDとパスワード */ user_id = "ユーザーID"; password = "パスワード"; page_id = 443; /*WPの投稿(既存)ページ */ end_point_url = "https://あなたのホームページ/wp-json/wp/v2/posts/" + page_id; /*WPの固定(既存)ページ */ end_point_url = "https://あなたのホームページ/wp-json/wp/v2/pages/" + page_id; baseEncoded = zoho.encryption.base64Encode(user_id + ":" + password); /*WPタイトル */ title = "テスト"; /*WPの本文*/ content = "Hello World From Zoho"; /*WPのステータス*/ status = "publish"; /*WPをポストする内容の配列 */ payload = {'title':title,'content':content,'status':status}; /*WPのベーシック認証*/ header = {"Authorization":"Basic " + baseEncoded}; /*Deluge Scriptでは、invokeurlを利用*/ response = invokeurl [ url :end_point_url type :PUT parameters:payload headers:header ]; /*201だとOK. */ info response; return response;
WPのユーザーIDとパスワード
WP側のユーザーIDは、ログインする時に使うユーザーIDでOKだが、パスワードは以下のものダウンロードして別途パスワード(API用パスワード)を発行する
必要がある(参考ページはこちら)。
サイト(WP)へのアクセス(エンドポイント)
サイト(WP)へのアクセスするためのエンドポイントは以下の通りだ。
/*WPに新規投稿(投稿ページ)*/ end_point_url = "https://あなたのホームページ/wp-json/wp/v2/posts/"; /*WPに既存ページに投稿(投稿ページ)*/ page_id = 443; end_point_url = "https://あなたのホームページ/wp-json/wp/v2/posts/" + page_id;
IDのみではなく、検索なども可能(参考ページはこちら)
WPのパラメーターはこちら
/*WPタイトル */ title = "テスト"; /*WPの本文*/ content = "Hello World From Zoho"; /*WPのステータス*/ status = "publish"; /*WPをポストする内容の配列 */ payload = { /*記事のタイトル*/ 'title':title, /*記事の本文*/ 'content':content, /*記事のステータス()*/ 'status':status };
記事のステータスは、publish(公開), future(公開予約), draft(下書き), pending(非公開), private(限定公開)から一つを選択。
その他はこちらを参照
WPのベーシック認証の方法
baseEncoded = zoho.encryption.base64Encode(user_id + ":" + password); header = {"Authorization":"Basic " + baseEncoded};
Deluge ScriptでのBase64Encodeの書き方は、zoho.encryption.base64Encode(ユーザーID:パスワード)
ZohoからWPへデータ送信
response = invokeurl [ url :end_point_url type :POST parameters:payload headers:header ];
ここの方法が最後までわからず、Zohoの本社テックの人に聞いてみた。
invoke urlの書き方はこちら。パラメータの詳細もあります。
ざっくりでしたが、いかがでしょうか?
また、詳細がわかってこればコンテンツを拡充させていきます。
Getする場合はこんな感じ
あと、Getする場合はこんな感じです。本社のテックの人が送ってくれました。
password = "mypassword"; username = "myusername"; baseEncoded = zoho.encryption.base64Encode(username+":"+password); header = { "Authorization" : "Basic "+baseEncoded }; url="https://test.com"; response=invokeurl[ url:url /*ここがGETに変わります*/ type:GET headers:header ]; info response;
これで確かに、GETできました。
Zoho CRMの項目とかにもデータを入れれそうな感じがしました。