2012年1月23日月曜日

GData API を利用して Google Blogger に投稿する

スプレッドシート、カレンダーと来たので次は Blogger に投稿する、というのをやってみました。感覚としてはスプレッドシートやカレンダーと比較すると、かなり簡単に思えます。

今回は手っ取り早くコードから。

   1: Imports Google.GData.Client
   2:  
   3: Module Module1
   4:  
   5:     Sub Main()
   6:  
   7:         Const uid = "" 'アカウント
   8:         Const pwd = "" 'パスワード
   9:         Const blogID = "" 'Blogger の ID(管理画面上のアドレスに表示されています)
  10:  
  11:         'サービスインスタンスの作成
  12:         Dim bgService As New Service("blogger", "SampleBloggerApplication")
  13:         bgService.Credentials = New GDataCredentials(uid, pwd)
  14:         Dim bgFactory = TryCast(bgService.RequestFactory, GDataGAuthRequestFactory)
  15:         bgFactory.AccountType = "GOOGLE"
  16:  
  17:         '投稿する内容を作成
  18:         Dim newEntry As New AtomEntry
  19:         newEntry.Title.Text = "Google Blogger API によるサンプル投稿"
  20:         newEntry.Content = New AtomContent
  21:         newEntry.Content.Content = "<div xmlns='http://www.w3.org/1999/xhtml'>" _
  22:                                              + "<p>これはサンプルとして投稿した記事です。</p>" _
  23:                                              + "</div>"
  24:         newEntry.Content.Type = "xhtml"
  25:         newEntry.IsDraft = True ' 下書き時に True
  26:  
  27:         '投稿
  28:         Dim bgFeed As New Uri("http://www.blogger.com/feeds/" + blogID + "/posts/default")
  29:         Dim bgResultEntry = bgService.Insert(bgFeed, newEntry)
  30:  
  31:     End Sub
  32:  
  33: End Module

先の二つと比較しても、特に難しい点はないと思います。今回もクライアント認証を利用していますが、OAuth を利用する事も可能です。

GBlogger2

実行するとこのような感じで投稿されます。

GBlogger3

投稿された中を確認すると、ロジック上で作成した中身がそのまま来ているのがわかると思います。

なお、自分が管理している Blogger の一覧を取得する場合は次のようなロジックで可能です。

   1: 'Blog 情報を取得
   2: Dim bgQuery As New FeedQuery With {
   3:     .Uri = New Uri("http://www.blogger.com/feeds/default/blogs")}
   4: Dim bgResultFeed = bgService.Query(bgQuery)
   5: For Each resEntry In bgResultFeed.Entries
   6:     Console.WriteLine("Blog Title : " + resEntry.Title.Text)
   7: Next

このようなロジックで Blogger に投稿できますので、例えば何かしらの実行履歴などをまとめてポストする、といった使い方も可能だと思います。

0 件のコメント:

コメントを投稿