MENU

【GAS】Google Apps Scriptからはてなブログへ投稿する方法

GASのメモ その1

需要は非常に低そうだけれど

GASことGoogle Apps Scriptを触っていていて、その途中でテストとしてはてなブログへの投稿を実装してみたのでその備忘録。

要はPOSTすればOK

はてなブログへのプログラム(スクリプト)からの投稿には、以下の注意点があります。

  1. 本文やメタ情報(タイトルとか投稿時間)はXMLで記載
  2. 認証が必要(Basic.oAuthとか)

1については、ただXMLを記載して変数にぶち込むだけなので特に割愛。公式に記載されているXMLがそのまま使えます。

気をつけるべきは2番、というか認証。 幾つかサンプル検索してヘッダの指定方法が分かったので下記に記載しておきます。 ヘッダまわりのことは一般常識なのかもしれませんが、知識のない人には中々難しい。

投稿にはidとpasswordが必要です。 idははてなのユーザID、passwordはブログの設定で確認できます。 特に事前設定は必要ない模様。

まあそれもBasic認証という非常に簡易的な方法だからなので、セキュリティを考えるなら他の認証使った方がいいかも。

下記ソースのユーザ情報(id、pw)とブログエントリー先URLの3箇所を変更すればいけるはず。

ソースコード

//HTTP POST
function sendHttpPost(message){

  //ユーザ情報
  var username = **********;
  var password = **********;
  var b = Utilities.base64Encode(username + ":" +password);

  //POSTヘッダ、オプション
  var headers = {"Authorization" : "Basic " + b};
  var options = {"headers" : headers,
                 "method" : "post",
                 "payload" : message,
                 "contentType" : "charset=utf-8;application/x.atom+xml",
                 "muteHttpExceptions" : true
                };

  //POST実行
  var log = UrlFetchApp.fetch("***ブログエントリー先URL***", options);
  Logger.log(log);
}


//main関数
function sendBlogContents(){

  //投稿内容を取得
  var message = createBlogBodys();

  //POST
  sendHttpPost(message);
}

//ブログ投稿内容を設定
function createBlogBodys(){

  var bodys = '<?xml version="1.0" encoding="utf-8"?>'
  + '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app">'
  + '<title>エントリタイトル</title>'
  + '<author><name>name</name></author>'
  + '<content type="text/plain">'
  + '** ブログ本文'
  + '</content>'
  + '<updated>2017-08-15T00:00:00</updated>'
  + '<category term="Scala" />'
  + '<app:control>'
  + '<app:draft>{yes | no}</app:draft>'
  + '</app:control>'
  + '</entry>';

  return bodys;
}