Google Apps 脚本 PropertiesService Obj 文字中的意外标记
Google Apps Script PropertiesService Unexpected Token in Obj Literal
我正在使用 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
}
看来问题与多个嵌套对象有关。显然,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'
我正在使用 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
}
看来问题与多个嵌套对象有关。显然,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'