最近知ったGoogle Docsのスプレッドシートでの裏技が3つほど。
1.importXMLなどの関数で簡単にWeb上からデータを取得できる
2.作成したスプレッドシートはRSSで出力できる
3.Google Apps Script = JavaScript(Excelのマクロみたいな物だと思ってました)
人によっては、今更感があるかもしれませんが、意外と知らない人が多いのではないかと思います。個人的には、なかなか便利だと思いました。プログラマでなくても、簡単にWeb上からデータを引っ張ってこれます。
……ということで、今回はこれを使って色々やってみました。
1.経済レポート.comでレポート発行元のURLを取得する
2.リアルタイム文書校正ツールを作る
3.特定URLのFacebookシェア数、ツイート数、はてブ数をカウントする
本当に実用的なのは、3くらいじゃないかと思われます。。。
経済レポート.comでレポート発行元のURLを取得する経済レポート.comの問題は、以前
グリースモンキーのスクリプトを作って解決した感じがありますが、やっぱりダイレクトに発行元のURLが取得できれば便利だと思います。
これはimportFeed関数とimportXML関数を使って取得できました。
アルゴリズムは、
1.「経済レポート.comのRSSを取得」
2.「各URLをパースして/jump.php~を取得」
3.「jump.php~をパース、発行元URLを取得」
といった感じになります。
まず、importFeedでRSSを取得します。これは、どこかのセルに「=importFeed("
http://www3.keizaireport.com/rss/node_1.xml")」とすればOKです。(importFeed(url)が基本型です。)
次に、クッションページ(jump.php)のURLを取得します。
ページの構造を見ると、
<h1><a href="取得したいURL">~</a></h1>
となっていて、かつh1タグは1ページに1つしかないようなので
「=importXML(セル;"//h1//a/@href")」で取得できます。(importXML(URL;"クエリ")が基本型です。)セルはRSSから抽出したURLが出力されているセルを指定します。
最後に、jump.phpを解析します。
これは
「=importXML("
http://www3.keizaireport.com" & セル;"//body/div['@class=font-size:20px;margin-top:100px;']/a/@href")」
で取得。divに続く[]内ではクラスを指定しています。
≫
完成したページRSSも勝手に出力してくれています。
リアルタイム文書校正ツールこれは結局失敗しました。誰か詳しい方がいたら教えてください。一応、どうやろうとしたか載せておきます。
Yahooが提供しているテキスト処理系APIで
文書校正支援APIというのがあります。
それを使えば、自動で文書校正をやってくれるツールが作れるのではないかと思ってやってみました。
とりあえず、APIキーを取得しておきます。
APIをリクエストする際に、テキストをエンコードする必要があるので、Script Editorを開き、以下のコードを保存します。
function encode(unencoded) {
return encodeURIComponent(unencoded.toString())
}「=encode("文字列")」といった感じで使えます。APIの結果はXMLで返ってくるので、importXMLを使います。
「=importXML(「リクエストURL」;"//Result")」
こんな感じでいけるかと思ったら、パースできませんでしたというエラー……

importFeedも試しましたが、ダメでした。ということで失敗。
特定URLのFacebookシェア数、ツイート数、はてブ数をカウントするこれは、我ながらなかなか良くできたと思います。
Facebook、ツイート数、はてブカウント、どれもapiの結果がjson形式なので、自作関数を作りました。
基本型がこんな感じです。
function fb(uri) {
var json = UrlFetchApp.fetch("http://graph.facebook.com/" + uri);
var item = Utilities.jsonParse(json.getContentText());
return item.shares;
}使い方は、「=fb("
http://~")」とセルに入力するだけです。
URL部分と最後のshares部分(キーを指定しています)を変更すれば、Twitter、はてブで使えます。
ということで、全部まとめたのがこちらです。
ToolsからScript editorを開いて保存すると使えます。
function fb(uri) {
var apiuri = "http://graph.facebook.com/";
var key = "shares";
return fetchapi(apiuri, uri, key);
}
function hatena(uri) {
var apiuri = "http://b.hatena.ne.jp/entry/json/";
var key = "count";
return fetchapi(apiuri, uri, key);
}
function twitter(uri) {
var apiuri = "http://urls.api.twitter.com/1/urls/count.json?url=";
var key = "count";
return fetchapi(apiuri, uri, key);
}
function fetchapi(apiuri, uri, key) {
var json = UrlFetchApp.fetch(apiuri + uri);
var item = Utilities.jsonParse(json.getContentText());
return eval("item." + key);
}fetchapiで共通する処理をまとめています。apiとkeyの部分を変更すれば、他のapiにも対応可能だと思います。
以下、使用例です。

まあ、私のブログの場合、頑張ってこの程度ですが笑
importXMLでRSSと組み合わせても良いかもしれません。
参考
≫
外部データに対する関数 : 関数 - Google ドキュメント ヘルプこちらにimport〜関数の詳しい説明が載っています
≫
text decode - Google Docs Help
posted by kaniwa at 22:31|
Comment(0)|
TrackBack(0)|
Web|
RSSを購読