Obj Literal中的Google Apps脚本属性服务意外令牌

时间:2018-02-07 23:48:20

标签: javascript google-apps-script google-form

我正在使用Google Apps PropertyService来存储一些设置变量。当我使用setProperties()函数并给它一个对象(就像它们在documentation中那样),然后尝试获取一个属性并解析它我得到一个SyntaxError: Unexpected Token in 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
}

1 个答案:

答案 0 :(得分:2)

似乎问题与多个嵌套对象有关。显然,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'