google.script.run の罠

いやー、これは嵌った。2時間嵌った。
何に嵌ったかと言うと、戻り値が思い通り返ってこないんです。

  • client側から呼ばれるAPI
/*
 * 単に、キーが数値となるオブジェクトを返すだけ
 */
function api()
{
  return {"1":"data1"};
}
  • client側でこれを呼んでデータを使用するのだが・・
google.script.run
  .withSuccessHandler(apiHandler)
  .api();

function apiHandler(result)
{
  console.log(result["1"]); // undefined !!
}

どうも、キーが数値となるオブジェクトはダメみたいです。なので回避策としては

  • アンダーバー付けるなりして強引に文字列となるオブジェクトにする
  • JSON.stringifyして文字列で返して、受け手側はJSON.parseする

とかが考えられます。