やりたかったこと
HTML側でgoogle.script.run
を使ってサーバー側の関数を呼び出し、その返り値をwithSuccessHandler(function)
のfunctionに引数として渡したいと思ったが、上手く渡らない。
できたこと
渡したいと思っていたデータは、配列の中に連想配列を入れたもの。これをそのまま渡そうとするとできないが、Array[0].key
という具合に一番奥まで覗いてから渡すと無事に渡せる。
調べてみた その1
詳しいことはわからないが、検索してみると以下のページが引っかかった。
http://d.hatena.ne.jp/shima111/20140407/p1
別にkeyが数値だった訳ではないのだけれど、このページがお勧めする通りにJSON化してみたら普通に渡せるようになった。
調べてみた その2
ここでHTML側に渡せる値をちゃんと調べてみた。 https://developers.google.com/apps-script/guides/html/communication#parameters_and_return_values にあるところをまとめる。
渡せるもの
- 数値
- 真偽値
- 文字列
- null
- プリミティブやオブジェクト、配列から構成されるJavaScriptオブジェクトおよび配列
渡せないもの
- 日付型
- 関数
- form以外のDOM要素
- 禁止された型を含むオブジェクトや配列
- 循環参照をしているオブジェクト
ここまで調べてようやく気づいたけど、渡したかった配列には日付型が入った連想配列が入ってたな。
という訳で、渡せないものを渡したいときはJSONで文字列化してから渡すのがいいみたいです。