カテゴリー別アーカイブ: ブログ

[Google Apps Script] GoogleスプレッドシートからFC2ブログへ投稿する

FC2ブログに、毎日、自動で投稿したいことが出てきたので、調べてみました。

Googleスプレッドシート(Google Apps Script)とXML-RPCを使って出来そうだったので、やってみました。

この方法のメリットは、

  1. Google(Gmail)のアカウントがあれば良く、新たにサーバーなどを用意する必要がなく、スケジューリングして自動実行が可能
  2. スプレッドシートとセットで使えるので投稿する記事や制御するためのリストを簡単に管理できる。

です。

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スプレッドシートを用意し、
“ツール”→”スクリプトエディタ” を選択。
下記の画面が表示された場合は、”空のプロジェク”をクリック

スクリプトを作成

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


プロジェク初期画面-2

削除したところ

プロジェク初期画面

ここで、

ikikko/Mimic-for-Google-Apps-Script · GitHub

にアクセスし、”mimic-gas.js” のコードを、画面コピー、または、zipダウンロードしてからコピーする。

mimic-gas コピー

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

mimic-gasペースト

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

mimic-gas名前変更

ライブラリの登録

”ファイル” → ”バージョンを管理” をクリック

バージョンを管理

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

バージョンを管理-1

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

バージョンを管理-2

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

プロジェクトのプロパティ

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

プロジェクトキーのコピー

ライブラリを使う側の設定

”ファイル”→”新規作成 ”→ ” プロジェクト” で、プロジェクトをもう一つ作ります。

プロジェクト作成

プロジェクトが作成されたら
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 を実行中」 が表示され、実行状態になり、しばらくすると、この表示が消えたら終了です。

関数 test実行中

FC2ブログで投稿確認

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

FC2ブログ投稿確認

スクリプトソース

var G = new Object();
G.fc2 = {
  url: "blog.fc2.com",
  blogid: "",
  username: "FC2ブログのログインユーザー名",    // FC2ブログのログインユーザー名
  password: "FC2ブログのパスワード",             // FC2ブログのパスワード
};
var adminEmail = 'foo@bar.com';   // エラーが発生した場合にエラーメールを送るアドレス

var publish =  false; // true;   // 記事の公開 trueで公開, falseで下書

function test (){
  fc2Post("テストタイトル", "テスト本文" , "未分類" );  // 最後のcategory名は、存在しているものを指定
}

function fc2Post(title, description, category) {
  var request = new mimic.XmlRpcRequest(G.fc2.url + '/xmlrpc.php', 'metaWeblog.newPost');
  request.addParam('');
  request.addParam(G.fc2.username);
  request.addParam(G.fc2.password);
  request.addParam({title: title, description: description, mt_convert_breaks:true }); // 本文中の改行をbrタグで反映
  request.addParam(publish);  // publish(trueで公開, falseで下書. 省略時は下書)

  var blogid = request.send().parseXML();  // 記事を投稿、記事番号が帰る
  if(blogid.faultCode ){  // 投稿できず
    MailApp.sendEmail(
      adminEmail,                     // To:
      "FC2自動投稿エラー" , // Subject
      "faultCode: " + blogid.faultCode +"\n" +
      "faultString: " + blogid.faultString +"\n"
    );
    return;  // Early exit
  }

  // カテゴリの設定
  var categoryId = fc2GetCategoryId(category); // 投稿するカテゴリ名のID番号を取得
  setCategory(categoryId, blogid);  // カテゴリをセット
}

// カテゴリのセット
function setCategory (categoryId, blogid) {
  var request = new mimic.XmlRpcRequest(G.fc2.url + '/xmlrpc.php', 'mt.setPostCategories');
  request.addParam(blogid);
  request.addParam(G.fc2.username);
  request.addParam(G.fc2.password);
  var yy = new Array({categoryId: categoryId, isPrimary: true});
  request.addParam(yy);
  var r = request.send().parseXML();  // 常にtrueが帰る
}

//カテゴリ名からカテゴリIDを取得
function fc2GetCategoryId(categoryName) {
  var categoryId = 0;
  var request = new mimic.XmlRpcRequest(G.fc2.url + '/xmlrpc.php', 'mt.getCategoryList');
  request.addParam('');
  request.addParam(G.fc2.username);
  request.addParam(G.fc2.password);
  var r = request.send().parseXML();  //

  for(var i in r){
    var name = r[i]['categoryName'];
    if(name == categoryName){
      categoryId = r[i]['categoryId']
    }
  }
  return categoryId;
}

課題

  • fc2側で改行コードが無くなってしまう。
    やタグは有効
  • テーマやユーザータグは指定できない
↓ 参考になるブログがたくさんあります!ぜひどうぞ! ↓
にほんブログ村 その他日記ブログ 日々のできごとへ

WordPressのインストールと最初にハマったDNS伝播遅延

お名前.comのレンタルサーバーにWordPressをインストールします。

まず、レンタルサーバー(共用サーバーSD)のコントロールパネルにログインします。

コントロールパネルで、 [ WordPress/MovalType ]をクリック

[新規インストール]をクリック

この画面上部に、”MySQLを作成してから行なってくだい”と書かれていますが、次の画面で、[データベース: MySQL/新規作成]を選択すれば、MySQLの作成も合わせてしてくれるので、無視しても大丈夫です。

”WordPress”の行の右端の [作成]をクリック

私は、1~3のみ入力し、それ以外は変更せずに[確認画面へ進む→]をクリックしました。

2つ目の項目に [データベース: MySQL/新規作成]が選択された状態でありました。

内容を確認し、[決定]をクリック

これで、レンタルサーバー側で、MySQLとWordPressのインストールが開始されます。

しかし、ここから、ハマることに(>_<)

「インストール完了まで数分~10分ほどかかる場合があります。
下記の管理画面にアクセスして、WordPressのログイン画面が表示されたらインストール完了です。」
と書かれてあったので、とりあえず、すぐに、管理画面URLをクリックしてみました。

すると、「404 :  ページが見つかりません」 のエラーページが表示されました。

「まだそれほど時間もたっていないから、インストール中なんだな~」と思い、しばらく時間をおいて、再度アクセスしました。 しかし、何度やっても同じエラーページが表示されるばかりです。

1時間近くたっても状況が変わらないので、サポートに電話してみました。

若干、待たされましたがサポートの方に繋がり、先方で管理画面URLにアクセスすると、問題無く”管理画面”が表示されるということでした。

ところが、こちらでは、やはり同じエラー画面が表示されています。

この症状で、サポートの方がDNS伝播の遅延によるものではないかと言われました。

DNS伝搬遅延とは、DNS(Domain Name Service)へのドメインやサーバーとそのIPアドレスなどの登録情報を変更しても、その変更内容がインターネット上で反映がが瞬時には伝わらず、徐々に伝わっていく事をさします。

これは、DNSサーバーが高速に動作するために、予め決められた期間(TTL)は既に調べたDNS情報を使ってサービスを提供していて、TTLの時間が経過した後の問い合わせで、他のDNSサーバーに最新情報をもらいに行く動作をします。この為、DNSの最新情報がインターネットの隅々まで伝わるまでにタイムラグが発生することになり、最大で24時間ぐらいかかる場合があります。

私の場合、確かにレンタルサーバーの申し込み完了と同時にWordPressの設定を開始しました。私のドメイン名がお名前.comのDNSに登録さた後、サポートの方は、それか、その近くのDNSを参照しているマシンでアクセスしたので、私のドメインのIPアドレスがすぐ引けようになっていて、私の方は、DNS伝搬遅延でIPアドレスが引けてなかったということです。

実際にnslookupで調べみると、

C:\ nslookup kenlog.net      <ーーー   kenlog.net のIPアドレスを調べる

サーバー: xxxxxxxxxxxxxxxxx <—普段、私がお伺いをたてているDNSサーバーが回答

Address: 172.19.1.100

権限のない回答:

名前: park.onamae.com <ーー これが404エラーを返していてサーバー

Address: 210.157.1.134

Aliases: kenlog.net

で、デフォルトで設定されている、エラー処理サーバー?のIPアドレスが登録された状態でした。次に、お名前.comのDNSサーバーに聞いてみると、

C:\ nslookup

既定のサーバー: xxxxxxxxxxxxxx

Address: 172.19.1.100

> server dns01.gmoserver.jp <— お伺い先をお名前.comのDNSサーバーに切り替える
既定のサーバー: dns01.gmoserver.jp
Address: 61.127.54.101

> kenlog.net
サーバー: dns01.gmoserver.jp
Address: 61.127.54.101
名前: kenlog.net
Address: 157.7.144.96 <—- 正しい、アドレス

と、さっきとは違うアドレスが帰って来ました。
DNSが伝播する待っていても良いのですが、結構せっかちなタチなので、Firefox + SwitchHostsアドオンを使い、専用hostsに下記を登録しkenlog.net 157.7.144.96www.kenlog.net 157.7.144.96WordPressの管理画面にアクセスできることを確認しました。しばらくすると、DNS情報も伝搬いてきて、普通にアクセスできる様になりました。

↓ 参考になるブログがたくさんあります!ぜひどうぞ! ↓
にほんブログ村 その他日記ブログ 日々のできごとへ

kenlog.netドメイン取得 と WordPressチャレンジへ

ある方のブログ名を見ていて、なんとなくgoogleで”kenlog”というキーワードを入れてみたら、そのものずばりがほとんどヒットしなかった。
ならばということで、お名前.comで”kenlog”を検索したら、 .comだけが登録済みで、.netなどは取れる状態だった。

さらに、翌日の12月6日までのキャンペーンで

ドメイン取得 と レンタルサーバー 【容量100GB・マルチドメイン無制限・WordPress対応】
を同時に申し込むと

.netドメインの取得料金 920円 → 1円
レンタルサーバーの初期費 945円 → 無料
レンタルサーバー月額 1,680円 * 最大3ヶ月分 = 5,040円 → 無料

また、Whois情報公開代行1,029円/年 → 無料キャンペーン中でした。
(Whois情報公開代行は、Whoisで検索されるドメインのオーナー情報に代わりにGMOインターネットの情報を代行して登録し、オーナーのプライバシーを保護してくれるサービスです)

上記全てを合計すると 7,925円分 → 1円 になるということで、速攻で申し込みをしてしまいました。(^_^;)

・・・ということで今日から、新たに取得した kenlog.netドメイン を 新規レンタルサーバーで使えるWordPressで立てることになったのです。

ちなみに、WordPressは初チャレンジです。

どうなることやら

↓ 参考になるブログがたくさんあります!ぜひどうぞ! ↓
にほんブログ村 その他日記ブログ 日々のできごとへ

参考記事:ブログを短期間で月間10万PVにする方法を公開します 僕の18個の戦略

ブログを短期間で月間10万PVにする方法を公開します– 私の17の戦略.png
ブログを短期間で月間10万PVにする方法を公開します 僕の17個の戦略 | Last Day. jp
より
■アクセスアップのための18の戦略
タイトル、タイトルそしてタイトルだ。
見やすいブログデザインにしよう
改行をいれてブログをすっきり見せる
最初の一文で読者の心を掴む!
誤字脱字のチェック
人気記事をサイドバーに見せる
記事の最後には関連記事を表示!
WordPressでアクセスアップ&SEO対策
はてブボタンとTweetボタンを作る。
RSS配信の文を最後にいれる。
ブログ更新の時間を考える
ブログの更新頻度
プロフィールをしっかり書こう。
ソーシャルメディアを駆使する
情報を出し惜しみしない
ゲストライターになる
HTMLとCSSをちょっと勉強しよう

↓ 参考になるブログがたくさんあります!ぜひどうぞ! ↓
にほんブログ村 その他日記ブログ 日々のできごとへ