需要澄清以下代码。
我记得,有时 Utilities.jsonStringify() 没有将函数保存在 JSON 对象中。但现在他们将其保存为字符串 ("resultFn":"\nfunction (pageNum, pageSize, filter) {\n return [{a:\"abc1\", b:\"bcd1\"}, {a: \"abc2\", b:\"bcd2\"}, {a:\"abc3\", b:\"bcd3\"}, {a:\"abc4\", b:\"bcd4\"} ];\n})。
并且使用 eval(),可以恢复该函数(请参阅我在 myFunction 中的代码)。它对我来说很好,至少对于琐碎的例子。
问:AFAIK,函数序列化超出标准。而且由于这没有记录,我们可以依靠谷歌作为 API 合同吗?
我还可以添加吗 - 这将为我节省很多代码行:)
var fnResults = function(pageNum, pageSize, filter) {
return [
{ a: "abc1", b: "bcd1" },
{ a: "abc2", b: "bcd2" },
{ a: "abc3", b: "bcd3" },
{ a: "abc4", b: "bcd4" },
];
};
var TestConfig = {
pagerId: "TestId",
pageSize: 10,
widgetWidth: "15cm",
filterOptions: [],
resultFn: fnResults,
};
function myFunction() {
Logger.log(TestConfig.resultFn(1,2,3));
var s = Utilities.jsonStringify(TestConfig);
Logger.log(s);
var o = Utilities.jsonParse(s);
Logger.log(eval(o.resultFn)(1,2,3));
}