ぼくらの研究

ぼくらのための研究をしていきます。

【VBA】ページ毎のfacebookいいねシェア数 を一括取得、ブログ全体の合計値を確認する

      2016/12/11

Facebookいいね

 

コード内容

先にコードから紹介します。


Sub Facebookシェア数獲得()

Dim i As Long
Dim TargetURL As String

i = 1

'####A列にあるXML形式データのURLを1行目から巡回してB列同行目に出力。A列のデータが空欄になるまで繰り返し。####
Do
 TargetURL = "http://api.facebook.com/method/fql.query?query=select+total_count+from+link_stat+where+url%3D%22" + Cells(i, 1).Value & "%22"
 ActiveWorkbook.XmlImport URL:=TargetURL, _
 ImportMap:=Nothing, Overwrite:=True, Destination:=Cells(i, 2)
 i = i + 1
Loop Until Sheets("Sheet1").Cells(i, 1) = ""

MsgBox "取得完了"

End Sub

 

コードの説明

検索しても検索しても求めるものが出てこなかったので自分で書いてみました。

Facebookのいいね、シェア数やコメント数は

http://graph.facebook.com/【Facebookのシェア数を取得したいページのURL】

にアクセスすると表示されます。よく紹介されているGraphAPIを使ったやつですね。

でもVBAで取得する場合はこれを使うことはおすすめしません。ホントに。

理由はこのページにアクセスした時にはき出されるデータがJSON形式だからです。VBAではハードルが高すぎます。悪いことはいいません。やめときましょう。

VBAで扱う際はこっちのページにアクセスしましょう。

http://api.facebook.com/method/fql.query?query=select+total_count+from+link_stat+where+url%3D%22【Facebookのシェア数を取得したいページのURL】%22

上のAPIを使った場合はデータがXML形式で値が返されます。

これをXmlImportメソッドを使ってセルに直接入れます。XML形式なのでわざわざIEを操作する必要なし。

今回のコードの例で言えばA列にシェア数を取得したいページのURL一覧並べて実行すると、B列にTRUEプロパティが書き込まれ、C列にいいね、シェア数が出力されます。

C列の値の合計がA列に入力したページ一覧の合計いいね、シェア数です。

 

A列に2015年のブログ記事一覧を入れれば、2015年の記事毎のFacebookのいいね、シェア数が分かりますし、その合計も分かります。
A列に全ページを入れれば、そのサイト(ブログ)全体のFacebookのいいね、シェア数が分かります。

 

※言うまでもないと思いますがブログトップページに紐付いているいいね数やシェア数とは違います。あれはトップページのURLだけについているものなので。もちろんそのブログのFacebookページに表示されている合計「いいね数」とも違います。

 

 

本職プログラマーの方はこんなことではつまづかないだろうけど、ぼくのように初心者にうぶ毛が生えたような人だったり諸事情があったりするひとはVBAで無理矢理やる人もいると思うんですよね。

そんな方の参考に少しでもなれば幸いです。