Google Apps脚本json数据在javascript中未定义

Google Apps脚本json数据在javascript中未定义,javascript,jquery,json,google-apps-script,Javascript,Jquery,Json,Google Apps Script,我试图使用javascript来显示数据,但是当我从服务器函数中获取数据时,数据变得未定义。数据通过jsonlint并尝试使用JSON.parse会导致意外的令牌错误。当从javascript访问时,为什么类型会改变?我如何访问数据 代码G.gs: function getAppMenus(appID) { var files = DriveApp.getFilesByName("Json.json"); var file = files.next(); data = file.ge

我试图使用javascript来显示数据,但是当我从服务器函数中获取数据时,数据变得未定义。数据通过jsonlint并尝试使用JSON.parse会导致意外的令牌错误。当从javascript访问时,为什么类型会改变?我如何访问数据

代码G.gs:

function getAppMenus(appID)
{
  var files = DriveApp.getFilesByName("Json.json");
  var file = files.next();
  data = file.getAs("json").getDataAsString()
  data = JSON.stringify(data);
  //data = JSON.parse(data);
  Logger.log(typeof(data));
  return data;
}
记录器说类型是字符串

$('document').ready(function()
{
  var menuData = google.script.run.getAppMenus("123");
  alert("type is:"+typeof(menuData));
  //menuData = JSON.stringify(menuData);
  //menuData = JSON.parse(menuData);
  //$("#main").append(menuData);
  alert(menuData);
  alert("fin");
});
警报表示类型未定义

日志:

Json.Json:

{
    "options": {
        "option": [
            {
                "name": "asdf",
                "stuff": "true"
            },
            {
                "name": "fdsa",
                "stuff": "false"
            }
        ]
    }
}

您最初使用的
JSON.parse()
是正确的,但出现了语法错误:
data=file.getAs(“JSON”).getDataAsString()
后面没有分号。这正如您所期望的:

函数getAppMenus(appID){ var files=DriveApp.getFilesByName(“Json.Json”); var file=files.next(); var data=file.getAs(“json”).getDataAsString(); //data=JSON.stringify(数据); data=JSON.parse(数据); Logger.log(数据类型); Logger.log(数据); 返回数据; } 已解决! 事实证明,要通过JS加载数据,需要对服务器进行异步调用。 在js中:

<script>
google.script.run.withSuccessHandler(displayButtons).getAppMenus("123");

function displayButtons(data)
{
    dataToDisplay = JSON.parse(data);
    alert(dataToDisplay);
}
</script>

google.script.run.withSuccessHandler(displayButtons).getAppMenus(“123”);
功能显示按钮(数据)
{
dataToDisplay=JSON.parse(数据);
警报(数据显示);
}

ah,这并不是真正的问题,因为分号在Javascript中是可选的。如果我删除分号,我会得到您最初在问题中指定的错误。如果我把它放回原处,那么一切正常:日志显示“object”,然后是一个格式正确的对象。
<script>
google.script.run.withSuccessHandler(displayButtons).getAppMenus("123");

function displayButtons(data)
{
    dataToDisplay = JSON.parse(data);
    alert(dataToDisplay);
}
</script>