Feel Physics Backyard

HoloLensの出張授業をする会社で、教材を開発しています

110115-GoogleスプレッドシートのフォームでWebサービスを作ろうとしたがダメだった

冬のドラマが始まりましたね。

どれを見るか参考にするため、ドラマ別にどんなツイートがつぶやかれているかを調べるWebサービスを作ろうと思いました。

結論から言うと、できませんでした。

まず最初にちょっとYahoo Pipesを試し、次にGoogleスプレッドシートのフォーム機能でできないか頑張りました。あと少しのところで、フォーム機能は関数を使えない(らしい)ことが判明。代わりに「Google Apps スクリプト」というのを使って欲しい、というのがGoogleの意向のようです。

以下、格闘の過程です。画像が小さいのは、TwitPicに全て入っているためです。原寸で入れることもできるのかと思っていたのですが、TwitPicはサムネールの貼り付けしかサポートしておらず、しかも必ず正方形になるので、えらく見にくいです。すいません。

まず、テレビを見ながらツイッターするサイトを探してみる。「ピーチク」「ツイテレ」が二大巨頭(というか、他にない)の模様。どちらがメジャーなのか、Google トレンドで調べてみると・・・

「ピーチク」(青)の方が圧倒的に検索数が多い。そこで、こちらの仕組みに乗っかることに。

「ピーチク」の仕組みは単純。例えばテレ朝を見ながらツイートすると「#tvasahi」というハッシュタグが付く。ちなみに「ツイテレ」では「@tv_asahi_twtv」というmentionが付く。

この仕組みとグーグルのリアルタイム検索を使って、12日夜21時からやっていたドラマ『相棒』に関するツイートを取り出してみる。具体的には、「#tvasahi」というキーワードでリアルタイム検索し、右上のタイムラインを使って、「21:00」に時間を合わせる。

マウスカーソルを合わせるのが、ちょっとめんどくさいが・・・

ようやくTVドラマ『相棒』12日21時放送分に関するツイートを見つけることができました。


この面倒な作業を自動化したい。で、最初に試したのがYahoo Pipes

とりあえずアドレスを入れてページを取得してみるが・・・

Google側の設定(robot.txt)で自動収集が不可にされている。残念。

Google側の設定(robot.txt)で自動収集が不可にされている。残念。


次に試すのはGoogleドキュメント。

こんな感じで日時を入れるフォームを作って・・・

これで、URLを出力させたい。

出力するURLは、こんな感じにしたい。秒数らしき値が4箇所ある。右上に表示するタイムラインの開始時刻と終了時刻、そして本文に表示する検索内容の該当範囲の開始時間と終了時間だろう。

出力するURLは、こんな感じにしたい。秒数らしき値が4箇所ある。右上に表示するタイムラインの開始時刻と終了時刻、そして本文に表示する検索内容の該当範囲の開始時間と終了時間だろう。

ゴリゴリと秒になおす。しかし表計算って便利だな。

さっきのURLに計算した値を入れてみる。これで、本文の表示範囲を12日の「21時ちょうど」から「22時ちょうど」までになるはず。えい!

さっきのURLに計算した値を入れてみる。これで、本文の表示範囲を12日の「21時ちょうど」から「22時ちょうど」までになるはず。えい!

おおお、来た!

右上のタイムラインは、1月12日の21:00 - 21:59となっている。22:00でなく21:59なのは、なんだか丁寧にテストされているような雰囲気。好印象。

本文の方は、一見よくわからないが、よく見ると逆さの時間順になっているため、一番下から上に向かって読まなければならない。ま、許容範囲か。

スプレッドシートを改良して、URLを出力するようにしてみる。単なる文字列として出力したら、Googleドキュメントが勝手にハイパーリンクにしてくれた。http://で始まる文字列は自動的にハイパーリンクとして扱われるようだ。

リンクのセルをクリックすると、下にバルーンのようなものが表示される。これをクリックすると、無事に目的のページに飛ぶことができました。

リンクのセルをクリックすると、下にバルーンのようなものが表示される。これをクリックすると、無事に目的のページに飛ぶことができました。


誰でも使えるように一般公開してみる。内容はまだテキトーだけど・・・

これって閲覧のみってことですよね・・・たぶん。そうでないと困る。

お、公開ページへのリンクが下に表示されました。短くして、ここにも載せておきます:http://ow.ly/3CYt3

公開ページを見てみる。んー、これでは意味がない。フォームが表示されないと。何かやり方があるはず。

「フォームを編集」で見てみると・・・

一番下にアドレスが書いてありました:http://ow.ly/3CYy3

一番下にアドレスが書いてありました:http://ow.ly/3CYy3

ぬあ、我ながら殺風景。

ぬあ、我ながら殺風景。

ちょっとマシになったかな: http://ow.ly/3CYy3

ちょっとマシになったかな:  http://ow.ly/3CYy3

送信してみる・・・あら、これはありえない。

送信してみる・・・あら、これはありえない。

しかも新しい行に数式が適用されていない。これって自動的にやる方法、あるのかな。

とりあえず数式は無理やり入れる。き、汚い・・・

ん、結果表示はこれでいけるかな?

これでいいかな?

微妙に意図したものと違うが・・・まあいいか。

微妙に意図したものと違うが・・・まあいいか。


・・・あら?新しい行の数式が全部消えている。これは一体どうしたものか。むーん。

いろいろ調べるとシートを分ければなんとかなることが判明。

いろいろ調べるとシートを分ければなんとかなることが判明。

新しい方式で1回送信してみる。「処理」シートには、まだ結果が反映されていないが、5分ごとに更新とあるので、待てということかな?

ん、入力された式が違う。1行削除したときにずれたのかな?

ん、入力された式が違う。1行削除したときにずれたのかな? もう一度、入力からやり直す。

あれ、一番新しい行が表示されない。 式を見ると・・・

ん、入力された式が違う。1行削除したときにずれたのかな?

なおしたはずの参照が1つズレている。そんなはずはない。 すぐ右のセルを見ると・・・

すぐ右のセルを見ると、参照が正しくなっている。これは・・・フォームで入力すると、入力した部分を参照するセルは削除される仕様なのか。そういう事は前もって言ってほしいな。

こちらは参照が正しくなっている。これは・・・フォームで入力すると、入力した部分を参照するセルは削除される仕様なのか。そういう事は前もって言ってほしいな。


スクリプト」というのがあったので見てみると、いつの間にか表計算からWebアプリまで幅広く扱う「Google Apps スクリプト」なるものができあがっている。

こういうコードを書けば、こういうフォームっぽいことができるらしい。要はこっちを使わせたいのかな。


・・・というわけで、結局うまくいきませんでした。Googleスプレッドシートのフォーム機能は、基本的に単純な集計機能しか持っていないようです。くー、残念。