Googleのブログアプリ「Blogger」のAPIを触ってみよう!
効率化部隊の越柴です。今回はBloggerAPIを触ってみようと思います。
検索したところBloggerに関する記事が少ないと感じたので、Bloggerに触れるきっかけ作り、その先の運用でお役に立てるといいなぁ~程度で執筆します。
1. Bloggerってなに?
Google社が提供する、無料で利用可能なブログサービスです。
noteやはてなブログと同様にブログ記事の更新ができるほか、ドメイン設定やGoogle AdSenseで収益化することもできます。
日本だと、Bloggerでブログ運営しているサイトは少ないようです。
2. なぜBloggerなのか
弊社マーケティング部では、部内の社内教育活性化の一環として各々のスキルを発信する活動が行われています。現在Gmailにて発信を行っているので、発信者が更新しやすく閲覧者もアクセスしやすい社内ブログを検討した結果、Bloggerにたどり着きました。
3. Bloggerの投稿通知を自動化できないか...
Bloggerの運営準備の一環として、発信者が投稿したことを通知で知らせたいという要望をいただきました。調べたところ、BloggerもAPIを提供していました。情報の取得・共有に使えないかプログラムを組んだ結果、見事動かすことができました。
4. BloggerAPIの準備をしてみよう!
まずは以下のBloggerAPIリファレンスページに飛び、以下の画面を表示します。
https://developers.google.com/blogger/docs/3.0/using?hl=ja
以下の手順でOauthクライアントIDを取得します
OauthクライアントをIDを取得する
Enable Blogger APIからCreate a new projectを選択
Product nameに良しなに名前をつける
以降、別の入力欄が出現しますがキャンセルで大丈夫です。
OauthIDを発行することで、自身の非公開ブログもプログラムで取得することができます。
また、リファレンスページを下にスクロールすると、BloggerAPIの認証スコープについても記載されていますので、こちらもコピーしておきましょう。
一般公開記事だけ取得するという方は、OauthではなくAPIキーを発行するというのもアリです。
5. プログラムを書いて挙動を確認してみよう!
以下のPostGet関数は、ブログの投稿情報を取得する文になっています。
blogIdは自身のBloggerのURLから取得することができ、投稿情報を取得するアクセスポイント「/posts」と連結させたURLを作成し、APIに命令を流します。
paramsでは期間や権限、投稿状況などを指定できます。
optionにget、headersにはOauthの情報を入れ、JSON形式でレスポンスを送ることを指示します。
function PostGet() {
var blogId = ''; // ブログのIDに置き換えてください
var url = 'https://www.googleapis.com/blogger/v3/blogs/' + blogId +'/posts';
//【APIに投げる情報の定義】
//取得するコンテンツの条件を設定(今回は指定しない)
var params={
//status:"live",
//view:"ADMIN",
};
//option:HTTPSに対しgetで、ヘッダーには認証情報、送信時にparamsで指定した条件も含めて投げます
var option={
method:"get",
muteHttpExceptions:true,
headers:{
"Authorization":"Bearer "+ScriptApp.getOAuthToken(),
"Accept": "application/json",
},
payload:params
}
// APIにアクセス
var response = UrlFetchApp.fetch(url,option);
var responseData = JSON.parse(response.getContentText());
// 投稿一覧の表示
Logger.log(responseData);
}
さて、プログラムは完成しましたが、Oauth認証を行うために利用している「ScriptApp.getOAuthToken()」は、ライブラリを追加する必要があるため、追加作業を行います。
ライブラリを追加したので動かしたいところですが、まだやることが残っています。
BloggerAPIへのアクセスには先ほどリファレンスページで取得したOauthのスコープ情報を、「appsscript.json」ファイルに記載する必要があります。
Apps Scriptの歯車マークから「appsscript.json」マニフェスト ファイルにチェックマークすることで、appsscript.jsonのファイルが出現します。
中身を開くと、Apps Script内のライブラリ追加状況やタイムゾーンなどが表示されており、設定ファイルのような役割をしています。
ここにBloggerAPIの認証スコープを入力していきます。
{
"timeZone": "Asia/Tokyo",
"dependencies": {
"libraries": [
{
"userSymbol": "OAuth2",
"version": "43",
"libraryId": "1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF"
}
]
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/blogger",
"https://www.googleapis.com/auth/blogger.readonly",
]
}
bloggerと書かれているのが「管理者として情報にアクセスします」、readonlyと書かれているのが「閲覧者としてアクセスします」ということと捉えていただければと思います。
6. 実行結果
※投稿内容は非公開のため、リファレンスページのレスポンス結果を示しています
一回の実行で、最新記事10件程度が取れるようです。
投稿通知でtitle、投稿日、URL、content辺りで、部内情報を発信できたらなと思います。
7. 苦戦したところ
今回、投稿情報を取得する際に該当する結果がないと勝手に投稿記事が作られてしまう仕様に悩まされました。アクセスポイントが違うのか?はたまたparam指定が違うのか?悩んだ挙句、仕様によるものでアクセスポイントは正しかったという考えに至るまで時間がかかりました。
リファレンスも少なかったのも苦戦を強いられた理由の一つかなと考えてます。
その他執筆者が特に苦労したところのつぶやきです。
contentから取得できる投稿記事の本文情報から、htmlタグを除外する作業
appsscript.jsonが何を表しているのか、そもそもどこにあるのか
API送信時のparam指定が通じなかった点
param指定に関しては、今後運用していくうえで使い方を学んでいきます。
ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!
株式会社分析屋について
弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。
ホームページはこちら。
noteでの会社紹介記事はこちら。
【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。