如何让GoogleSheets绑定的code.js从一个不包含的远程.js文件读取JavaScript并对其执行操作?
我在自己的GSuite硬盘上有一个谷歌表单。此Google Sheets有一个绑定的code.js脚本文件。我还有一个远程.js文件,其中包含我希望在工作表上执行的函数(在正常情况下,此函数只需驻留在code.js文件中) 我在工作表上创建了按钮图像,这些图像在code.js文件中触发脚本。单击按钮时,我的code.js脚本将成功执行:如何让GoogleSheets绑定的code.js从一个不包含的远程.js文件读取JavaScript并对其执行操作?,javascript,html,google-sheets,Javascript,Html,Google Sheets,我在自己的GSuite硬盘上有一个谷歌表单。此Google Sheets有一个绑定的code.js脚本文件。我还有一个远程.js文件,其中包含我希望在工作表上执行的函数(在正常情况下,此函数只需驻留在code.js文件中) 我在工作表上创建了按钮图像,这些图像在code.js文件中触发脚本。单击按钮时,我的code.js脚本将成功执行: 该按钮触发code.js脚本,该脚本通过URL获取远程js文件并将其存储到变量中(该远程文件可以很容易地成为文本文件,但为了检查OCD,我将其命名为.js)
- 该按钮触发code.js脚本,该脚本通过URL获取远程js文件并将其存储到变量中(该远程文件可以很容易地成为文本文件,但为了检查OCD,我将其命名为.js)
- 我使用
确认整个.js文件确实已被检索李>console.log(variable)
- 我使用
但什么也没发生eval(variable)
console.log(变量)
输出直接粘贴到code.js文件中,它将按预期工作
eval()
调用错误吗?还是它不像我希望的那样强大
function countStuffButton() { //Counts the number of current stuffs
var url = "http://my.website/js/countStuff.js";
var javascript = UrlFetchApp.fetch(url).getContentText();
console.log(javascript);
eval(javascript);
}
console.log
我得到的:
function countStuff() {
// bunch of code that works when paste directly into code.js
}
我希望/期望的是,我可以将JavaScript函数存储在服务器上的.js文件中,然后在我的Google Sheets的code.js绑定脚本中获取要在本地处理的函数内容,从而生成一个纯“前端”的Google Sheets对我在服务器上完全拥有和控制的文件进行脚本和HTML调用。使用eval(code)
函数可以从字符串执行JavaScript代码
但是,code
需要是一个字符串,其中包含要计算的JavaScript表达式或要执行的语句
在本例中,变量javascript
包含countStuff函数声明
函数声明是执行创建值为函数值的变量的操作的语句
要解决此问题,您可以:
eval('new'+javascript+'()')
countStuff
变得可用,因此您也可以在eval()执行后调用它,如countStuff()
function countStuff() {
//bunch of code that works when paste directly into code.js
}()