8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GoogleAppsScriptでサーバー側からHTML側に値が上手く渡らない

Last updated at Posted at 2019-03-02

やりたかったこと

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で文字列化してから渡すのがいいみたいです。

8
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?