Eva*_*ice 5 javascript import eval google-apps-script
免责声明:我完全理解使用eval的风险/缺点,但这是一个我无法找到任何其他方式的利基案例.
在Google Apps Scripting中,仍然没有内置功能可以将脚本作为库导入,所以很多工作表都可以使用相同的代码; 但是,有是内置的设施,我可以从一个纯文本文件导入文本.
这是评估代码:
var id = [The-docID-goes-here];
var code = DocsList.getFileById(id).getContentAsString();
var lib = eval(code);
Logger.log(lib.fetchDate());
Run Code Online (Sandbox Code Playgroud)
这是我在外部文件中使用的一些示例代码:
{
fetchDate: function() {
var d = new Date();
var dateString = (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear();
return dateString;
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是将一个大对象文字(包含所有库代码)放到一个局部变量上,这样我就可以引用它的属性/函数,就像它们包含在它们自己的命名空间中一样.
Rob*_*b W 14
替换var lib = eval(code);为:
var lib = eval('(' + code + ')');
Run Code Online (Sandbox Code Playgroud)
当省略parens时,花括号被解释为代码块的标记.因此,返回值eval是fetchData函数,而不是包含函数的对象.
当缺少函数名时,块中的代码将被标记为带标签的匿名函数语句,该语句无效.
添加parens后,花括号用作对象文字(按预期),返回值eval是对象,使用fetchData方法.然后,您的代码将工作.
| 归档时间: |
|
| 查看次数: |
3116 次 |
| 最近记录: |