FC2ブログに、毎日、自動で投稿したいことが出てきたので、調べてみました。
Googleスプレッドシート(Google Apps Script)とXML-RPCを使って出来そうだったので、やってみました。
この方法のメリットは、
- Google(Gmail)のアカウントがあれば良く、新たにサーバーなどを用意する必要がなく、スケジューリングして自動実行が可能
- スプレッドシートとセットで使えるので投稿する記事や制御するためのリストを簡単に管理できる。
です。
Google Apps Script用のXML-RPC clientは
XML-RPC client on Google Apps Script を作りましたよ – @ikikko のはてなブログ さんのものを使用します。
このページには、「今のGoogle Apps Scriptでは外部JSファイルをインクルードするような機能が多分ないので、コピペするしかないと思います。
」と書かれていますが、2012年5月より、Libraries – Google Apps Script — Google Developers が使えるようになっているので、ライブラリの仕組みを使て行い。
ikikko/Mimic-for-Google-Apps-Script · GitHub
からダウンロードしました。
ライブラリの準備
新しい、Googleスプレッドシートを用意し、
“ツール”→”スクリプトエディタ” を選択。
下記の画面が表示された場合は、”空のプロジェク”をクリック

無題のプエジェクトが開かれる
赤枠のコードは削除する。

削除したところ

ここで、
ikikko/Mimic-for-Google-Apps-Script · GitHub
にアクセスし、”mimic-gas.js” のコードを、画面コピー、または、zipダウンロードしてからコピーする。

コピーした、mimic-gas.jsのコードを “無題プロジェクト”にペーストします。
16行目ぐらいに “Mimic (XML-RPC Client for JavaScript) v2.0.1 “と書かれていればOKです。

以下の様に名称変更する
”無題プロジェクト” → “mimic” (クリックして変更)
“コード.gs” → ”mimic-gas.gs” (▼をクリックし、”名前を変更…”で変更)

ライブラリの登録
”ファイル” → ”バージョンを管理” をクリック

”新規作成”などと入力し、”新しいバージョンを保存”をクリック

バージョンが保存されます。

”ファイル” → ”プロジェクトのプロパティ”をクリック

”プロジェクトキー” の値を、コピー します。

ライブラリを使う側の設定
”ファイル”→”新規作成 ”→ ” プロジェクト” で、プロジェクトをもう一つ作ります。

プロジェクトが作成されたら
1.プロジェクト名をクリックして、”FC2ブログ投稿”などに変更
2.コードは削除しておく。
3.”リソース” → ”ライブラリを管理”をクリック

”ライブラリを検索”にライブラリの”プロジェクトのプロパティ”でコピーした ”プロジェクトキー” の値 を貼り付け、”選択”をクリック。

”選択”をクリックすると、ライブラリの情報が表示されます。
”バージョン”を選択(この場合、”1 新規作成”)し、”保存”ボタンをクリック。
識別子はデフォルトでタイトル名がコピーされ、この名称でライブラリ呼び出しを行います。識別子は日本語は使えません。下のコードで、ライブラリを識別子を付けて呼び出しているのは以下の様な部分です。
var request = new mimic.XmlRpcRequest(G.fc2.url + '/xmlrpc.php', 'metaWeblog.newPost');
識別子を変更したら、対応する呼び出しコードも変更剃る必要があります。

下の、スクリプトソースコードをコピー&ペーストし、
username
password
adminEmail
を、自分のものに変更します。
publishは、trueにすると、記事を公開でポストしますので、テスト段階では、falseで下書きになるようにしておいた方がよいです。

Ctrl+S または、 ”ファイル” → ”保存” で保存します。
“関数を選択”から”test”を選択。(保存しないと出て来ません)

実行
▶ (実行)ボタンをクリックします。

最初に実行するときに”承認が必要です”画面が表示されます。”承認”をクリックします。

”閉じる”をクリック。

「関数 test を実行中」 が表示され、実行状態になり、しばらくすると、この表示が消えたら終了です。

FC2ブログで投稿確認
FC2にログインし、投稿を確認します。

スクリプトソース
5 | username: "FC2ブログのログインユーザー名" , |
6 | password: "FC2ブログのパスワード" , |
8 | var adminEmail = 'foo@bar.com' ; |
13 | fc2Post( "テストタイトル" , "テスト本文" , "未分類" ); |
16 | function fc2Post(title, description, category) { |
17 | var request = new mimic.XmlRpcRequest(G.fc2.url + '/xmlrpc.php' , 'metaWeblog.newPost' ); |
19 | request.addParam(G.fc2.username); |
20 | request.addParam(G.fc2.password); |
21 | request.addParam({title: title, description: description, mt_convert_breaks: true }); |
22 | request.addParam(publish); |
24 | var blogid = request.send().parseXML(); |
25 | if (blogid.faultCode ){ |
29 | "faultCode: " + blogid.faultCode + "\n" + |
30 | "faultString: " + blogid.faultString + "\n" |
36 | var categoryId = fc2GetCategoryId(category); |
37 | setCategory(categoryId, blogid); |
41 | function setCategory (categoryId, blogid) { |
42 | var request = new mimic.XmlRpcRequest(G.fc2.url + '/xmlrpc.php' , 'mt.setPostCategories' ); |
43 | request.addParam(blogid); |
44 | request.addParam(G.fc2.username); |
45 | request.addParam(G.fc2.password); |
46 | var yy = new Array({categoryId: categoryId, isPrimary: true }); |
48 | var r = request.send().parseXML(); |
52 | function fc2GetCategoryId(categoryName) { |
54 | var request = new mimic.XmlRpcRequest(G.fc2.url + '/xmlrpc.php' , 'mt.getCategoryList' ); |
56 | request.addParam(G.fc2.username); |
57 | request.addParam(G.fc2.password); |
58 | var r = request.send().parseXML(); |
61 | var name = r[i][ 'categoryName' ]; |
62 | if (name == categoryName){ |
63 | categoryId = r[i][ 'categoryId' ] |
課題
- fc2側で改行コードが無くなってしまう。
やタグは有効
- テーマやユーザータグは指定できない
コメント
とても参考になりました!!ありがとうございます!!
wordpress での自動投稿を調べて、このサイトの辿りつきました。もし可能でしたら、wordpres のgoogle apps script での自動投稿の方法を教えて頂けないでしょうか?
まずは、下記を対象のWordpressのものに変更して、ログインできるか確認でしょうか。その後は、対象Wordpressの環境にあわせて調整かと
G.fc2 = {
url: “blog.fc2.com”,
blogid: “”,
username: “FC2ブログのログインユーザー名”, // FC2ブログのログインユーザー名
password: “FC2ブログのパスワード”, // FC2ブログのパスワード
};