Javascript Google应用程序脚本属性服务意外标记(Obj文字)

Javascript Google应用程序脚本属性服务意外标记(Obj文字),javascript,google-apps-script,google-forms,Javascript,Google Apps Script,Google Forms,我正在使用Google Apps PropertyService来存储一些设置变量。当我使用setProperties()函数并给它一个对象(就像在中一样),然后尝试获取一个属性并对其进行分析时,我得到了一个SyntaxError:object Literal中的意外标记 在我运行此代码之前,PropertiesService已清空。据我所知,我得到了一个字符串,我应该能够解析成一个对象 function setDefaults(){ var def = { config: {

我正在使用Google Apps PropertyService来存储一些设置变量。当我使用setProperties()函数并给它一个对象(就像在中一样),然后尝试获取一个属性并对其进行分析时,我得到了一个
SyntaxError:object Literal中的意外标记

在我运行此代码之前,PropertiesService已清空。据我所知,我得到了一个字符串,我应该能够解析成一个对象

function setDefaults(){
  var def = {
    config: {
      isSetup: false
    },
    test: {
      page: true
    }
}

var docServ = PropertiesService.getDocumentProperties();
docServ.setProperties(def, true);

log(typeof docServ.getProperty("config")); //string
log(docServ.getProperty("config")); //{isSetup=false}
log(JSON.parse(docSer.getProperty("config"))); //SyntaxError
}

这个问题似乎与多个嵌套对象有关。显然,JSON解析器只能降低一个级别

对每个嵌套对象调用JSON.stringify()解决了我的问题:

 var def = {config: {isSetup: false}, test: {page: true}};

  for (var prop in def) {

    def[prop] = JSON.stringify(def[prop]);

  }

var docServ = PropertiesService.getDocumentProperties();
docServ.setProperties(def, true);

var config  = JSON.parse(docServ.getProperty("config"));

Logger.log(config.isSetup); //logs 'false'

哈哈。非常感谢你!老实说,我已经为此工作了至少3个小时!我想我可以把这归咎于对Javascript缺乏经验?呜呜。。。再次感谢!!setProperties()接受一个对象,所以它不应该在不串接内部属性的情况下工作吗?@ChrisWood同意-应该。但是,出于某种原因,只有当对象不包含任何本身就是对象的属性时,它才起作用。