Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 调用库中的另一个函数时,内部函数出现语法错误_Google Apps Script_Dependencies_V8 - Fatal编程技术网

Google apps script 调用库中的另一个函数时,内部函数出现语法错误

Google apps script 调用库中的另一个函数时,内部函数出现语法错误,google-apps-script,dependencies,v8,Google Apps Script,Dependencies,V8,我对引用库的脚本有问题。我的问题不是连接到库,而是我的脚本调用了一个函数,但当它运行时,它会在我没有引用的函数上出错 在表A中,我有以下代码: function DataPull() { MasterScriptLibrary.DataPullBillable() } 在MasterScriptLibrary(项目全名为2020 MasterScriptLibrary)中,我有两个不同的函数(它们根本不相互引用),分别称为convertPersonal和datapullbilable

我对引用库的脚本有问题。我的问题不是连接到库,而是我的脚本调用了一个函数,但当它运行时,它会在我没有引用的函数上出错

在表A中,我有以下代码:

function DataPull() {

  MasterScriptLibrary.DataPullBillable()

}
MasterScriptLibrary
(项目全名为2020 MasterScriptLibrary)中,我有两个不同的函数(它们根本不相互引用),分别称为
convertPersonal
datapullbilable

当上述函数从工作表A运行时,我收到一条错误消息:

语法错误。(第66行,文件“ConvertPersonal”,项目“2020主脚本库”)

图书馆第66行:

var data = activeRange.filter(element => element.join("") != "");

知道这里会发生什么吗?

问题

当GoogleApps脚本项目中需要库时,它将在调用脚本的环境中运行。因此,如果调用脚本的运行时不支持库使用的任何语言功能/语法,它将抛出相应的错误

运行时

自GAS从运行时切换到运行时以来,最常见的问题之一是由于尝试使用ES6功能引起的(一些功能甚至在旧功能中也得到了支持,但自大修以来,开发人员资源中就没有了全面的列表)

语法错误

您试图使用旧版运行时不支持的语法,因此出现了
SyntaxError
。消息直接指向问题(第66行),但没有提供错误信息,因此混淆是可以理解的(事实上,它是有效的ES6语法)

实际问题是存在箭头函数

检查运行时

要检查使用了哪个运行时(如果使用脚本编辑器,除了顶部的斑块),请打开清单文件(
appsscript.json
)并找到
runtimeVersion
字段,它将设置为“V8”或“弃用的ES5”(Rhino)


较新的脚本保证使用V8,但您必须手动将上述字段设置为
V8
(您也可以根据需要“降级”)或选择“运行”菜单中的选项,才能使用较旧的脚本。

[在您之前开始注释-错误看起来就像在Rhino运行时使用箭头函数]与主管达成一致-您需要说明如何声明
convertPersonal
。库的第66行出现语法错误(确切的错误消息)。如果您认为语法有效,请检查是否在非V8脚本中使用ES6功能,它们会导致语法错误。如果您在脚本清单中显示库的标识符(尽管您应该收到另一个关于不匹配的错误),这也会很有帮助;第66行:var data=activeRange.filter(element=>element.join(“”!=“”));版本是V8,我想我是根据你的问题想出来的!主脚本文件是V8,但“工作表A”不是。一旦我把它们设置成同一个版本,原始脚本就生效了。