TypeError: Method quot;getRangequot; of null when using multiple scripts (Libraries) in Google scripts(TypeError:在Google脚本中使用多个脚本(库)时方法为空)
问题描述
在Google Sheet中使用库时遇到严重问题。
我有两个电子表格:仪表板1和仪表板2。在这两个电子表格中,我都有多个脚本和触发器。
有一个特定的触发器在Dashboard2中的Event OnEDIT上触发。代码如下:
仪表板2
Code.gs
function onEdit(e){
Dashboard1.updateReferral(e.oldValue, e.value);
}
仪表板1
Code.gs
function updateReferral(evaluatedEmail, newReferral){
var employee = returnEmployeeRow(evaluatedEmail);
PAYROLL_SHEET.getRange(REFERRAL_COLUMN + employee[2]).setValue(newReferral);
}
Constants.gs
var SHEET_CATEGORIES = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Categorias");
var RANGE_CATEGORIES = SHEET_CATEGORIES.getRange("A2:G");
var CATEGORIES = RANGE_CATEGORIES.getValues();
我要做的是,当有人在仪表板2中进行编辑时,它会更新仪表板1中的一行。
当我尝试触发事件时,它抛出错误
TypeError: Cannot call method "getRange" of null. (line 2, file "Constants", project "XXXXXX")
我发现这个错误是因为Dashboard2中没有工作表"Categorias"。 如果我在Dashboard2中创建一个工作表"Categorias",它可以正常工作。
我的问题是:
这是正常行为吗?为什么当我运行代码时,它试图从Dashboard1中的Constants.gs初始化变量,因为它们存在于Dashboard2中?
这个问题有解决方案吗?还是我做不到?
我尝试在.gs文件中使用不同的名称,但不起作用。 我还尝试删除文件Constants.gs,并将所有变量都放在Code.gs中。
推荐答案
来自操作员的问题
我的问题是:
- 这是正常行为吗?为什么当我运行代码时,它试图从Dashboard1中的Constants.gs初始化变量,因为它们存在于Dashboard2中?
是的,此行为"正常"。
- 这个问题有解决方案吗?还是我做不到?
解决方案有很多种。Google Apps脚本项目的一些经验法则,可以帮助您决定如何继续:
- 减少全局作用域中的变量声明,并在全局作用域中声明变量时,将其限制为赋值。
- 仅对库使用独立项目,但如果确实需要将绑定项目用作库,请不要在库函数上使用"getActive"方法,而是将"active"对象作为参数添加到需要它们的库函数上。
相关
- GAS: Problems in using global variables in functions
- Variable scope between spreadsheet script and script library
- Calling variables at global scope and comparing it in Google apps script
- Using Global vars in GAS, is it advisable? are there any downsides?
这篇关于TypeError:在Google脚本中使用多个脚本(库)时方法为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:TypeError:在Google脚本中使用多个脚本(库)时方法为空
基础教程推荐
- 我什么时候应该在导入时使用方括号 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 动态更新多个选择框 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01