Javascript Google应用程序脚本属性服务意外标记(Obj文字)
我正在使用Google Apps PropertyService来存储一些设置变量。当我使用setProperties()函数并给它一个对象(就像在中一样),然后尝试获取一个属性并对其进行分析时,我得到了一个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: {
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同意-应该。但是,出于某种原因,只有当对象不包含任何本身就是对象的属性时,它才起作用。