「目次作成支援ツール」が超便利

NaRaKa さんの「目次作成支援ツール・・・のようなもの」が超便利

Google Drive で使うことのできるスプレッドシートに RSS を読み込む関数があるんだね。知らなかったよ。

IMPORTFEED - ドキュメント エディタ ヘルプ

んーと,このヘルプじゃ分かりにくいか。じゃあ,こっちでどうかな? 「感じ」は掴めると思うけど。

Feedmedia: Google SpreadsheetsのimportFeed関数の使い方

なんか私の周囲では酷い誤解があって「プログラマなんだから Excel なんか楽勝でしょ」なんて言われるのよ。んなことないってば。そりゃあ若いころは検証用に30次のバンドパスフィルタを Excel で作れとか言われて泣きながら徹夜したこともあったけどさ(なんでハード屋ってのは目に見えないと信用しないのかね。バンドパスフィルタくらい自分で組みやがれ)。基本的にドキュメントツールってのは「書ければいい」ので Office Suite の奥深さに触れるなんてことはまずないわけ。だから Google Drive のスプレッドシートにこんな機能があるなんて知らなかったのさ。結構面白いよね。

NaRaKa さんのツールは Yahoo Pipe で作られていて,以下の URL で見ることができる。

http://pipes.yahoo.com/pipes/pipe.info?_id=e6a8b8335aaaaa5d4d748efe8dde7728

このページを開くと以下のような画面が表示される。

このページでアカウント名など必要な項目を入れて「Get as RSS」のリンクから RSS を取得できる。更にこの RSS の URL を IMPORTFEED 関数にぶち込めばスプレッドシートに目次情報が展開される。

たとえば RSS からタイトルのみを取得したいときはセルに以下のように関数を指定する。

=ImportFeed("http://pipes.yahoo.com/pipes/pipe.run?_id=e6a8b8335aaaaa5d4d748efe8dde7728&_render=rss&limit=2&num=1&username=spiegel&%E9%99%A4%E5%A4%96=Talk", "items title", true)

URL は私の note のものなので注意。第2引数の "items title" が取得したい feed の要素(この場合はタイトル)を示している。第3引数の true は先頭行をタイトル行にするかどうかの指定。これでタイトルのリストが取得できる。同様に URL や日付情報も取得できる。

タイトルは「[ TextNote:Spiegel's Trunk ] 大都会の照明がすべて消えたら」みたいな感じで先頭に post の種類とユーザ名が入る。これが要らない場合はスプレッドシートの REGEXREPLACE 関数で削除できる。こんな感じで指定すれば良い。

=TRIM(REGEXREPLACE(A2, "\[.*\]", ""))

これはセルA2の文字列からカッコ [...] で囲まれた部分を除去するという意味。これを更に TRIM 関数を使って文字列の前後の空白を除去している。

feed item の title と url を使えばアンカータグ付きのタイトル文字列をスプレッドシートで合成できる。 Excel では文字列の連結は + 演算子が使えたが,スプレッドシートでは CONCATENATE 関数を使う必要があるので注意。

=CONCATENATE("<a href=""",B2,""">",TRIM(REGEXREPLACE(A2, "\[.*\]", "")),"</a>")

いやぁ,正直言って目次を手作業で整理するのは面倒くさくなっていたので,一部でも自動化できるのはありがたい。NaRaKa さんに感謝です。

追記:

ブログではカスタム関数を使ってさらなる自動化を目指しました。もっと遊びたい方はご覧あれ:

Google spreadsheets で遊んでみた -- Baldanders.info