如何让GoogleSheets绑定的code.js从一个不包含的远程.js文件读取JavaScript并对其执行操作?

如何让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)

我在自己的GSuite硬盘上有一个谷歌表单。此Google Sheets有一个绑定的code.js脚本文件。我还有一个远程.js文件,其中包含我希望在工作表上执行的函数(在正常情况下,此函数只需驻留在code.js文件中)

我在工作表上创建了按钮图像,这些图像在code.js文件中触发脚本。单击按钮时,我的code.js脚本将成功执行:

  • 该按钮触发code.js脚本,该脚本通过URL获取远程js文件并将其存储到变量中(该远程文件可以很容易地成为文本文件,但为了检查OCD,我将其命名为.js)
  • 我使用
    console.log(variable)
    确认整个.js文件确实已被检索
  • 我使用
    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函数声明

函数声明是执行创建值为函数值的变量的操作的语句

要解决此问题,您可以:
  • 将远程countStuff功能更改为:
  • 自己调用函数
    eval('new'+javascript+'()')
  • 要理解第二个场景以及为什么需要新场景,请查看

  • countStuff
    变得可用,因此您也可以在eval()执行后调用它,如
    countStuff()
  • function countStuff() {
    //bunch of code that works when paste directly into code.js
    }()