FusionTables x Google SpreadSheet(Google App Script)

経緯

  • Google SpreadSheetでスクリプトが書けるとのことで、調べていて、FusionTablesというデータベースが使えるので、使おうと思ったときのメモ

結果

FusionTablesを使おうとしたのは失敗だった…

スマートフォンのSpreadSheetアプリからFusionTablesにアクセスするスクリプトを実行できない

やろうとしたこと

幻想水滸伝ティアクライス)の交易で、どこで何を買うべきかを計算したい

スプレッドシートで入力と計算ができれば便利かなー

やったこと

FusionTablesに価格表を格納して、出発地と到着地での価格から利益の出る交易品を、(利益率の降順、価格の昇順)でソートして表示

FusionTablesに新しい都市の交易品価格を登録

分かったこと

 javascript

二次元連想配列はlengthが取れない(objectではlengthが取れないから、最初の次元はArrayにする)

Array.prototype.sortの引数に比較関数を指定すれば、二次元配列を複数の項目でソートできる。

Array.prototype.sortは、[{}]でもソートできる。比較関数でobjのプロパティを適切に取ればいい。

google app script

onEdit(event)はこの名前の関数があると編集時に呼ばれる(onChangeはトリガを設定する必要があるらしい)

onEdit(event)には、range(Range), source(SpreadSheet), value, oldValueが渡される。

FusionTables

SELECT文でJOINができない(CREATE VIEWでならできる。この場合でも、自己表連結はできない)

DELETE文でWHEREが使えない。全部消すか、1つずつ消すときはROWIDをSELECTで取得して、一つずつ消す必要がある。

WHEREでIN句が使えない

SpreadSheetのonEditで操作しようとすると、認証が必要になる

分からなかったこと

SpreadSheetのGASでFusionTablesを操作するときに、oauth認証をする方法が分からない(目的が小さいし、用途も自分用なので、Webアプリを作る気はない)

 

…コードとかリンクとかを埋めこみたいが、そのためにはブラウザを開きながらコーディングしないといけないのか