TreasureDataで出力したSpreadSheetでグラフを書く
tl;dr
https://docs.google.com/spreadsheets/d/1y_gnVIvwuAQn2h8M5Gbf15MhCK2uzBjbJXCCbI_gMlw/pubhtml
概要
Treasure DataではQueryの結果をGoogle SpreadSheetに出力できるのだが、出力方式の問題で書き出すたびにシートのIDが変わってしまう。書き出すシートの名前がdata
の時、グラフの範囲に=data!A:A
と書くことでdata
シートのA
列をグラフのソースに指定できるものの、TDのQueryをRunしてシートを書き換えるとグラフが壊れる。
=data!A:A
と書いた値は、SpreadSheet内部ではシートのIDに置き換わっていて、シートのIDが変わった時にグラフが壊れるという仕組みだと思う。
そこで、INDIRECT関数を使ってまるっきり同じシートを作ってやり、グラフはそのシートを参照するようにする。中間シートを作るための関数はこれ。1行目に必要な列分貼り付ければ良い。
=INDIRECT(CONCATENATE("data!", ADDRESS(1, COLUMN(), 4), ":", LEFT(ADDRESS(1, COLUMN(), 4), 1)))
CONCATENATE("data!", ADDRESS(1, COLUMN(), 4), ":", LEFT(ADDRESS(1, COLUMN(), 4), 1))
では"data!A:A"
といった文字列を生成している。
もっといいやり方があれば教えてください…。