gpt4 book ai didi

javascript - 类型错误 : Method "getRange" of null when using multiple scripts (Libraries) in Google scripts

转载 作者:行者123 更新时间:2023-11-30 13:54:43 24 4
gpt4 key购买 nike

我在使用 Google 表格中的库时遇到严重问题。

我有两个电子表格:Dashboard1 和 Dashboard2。在这两个电子表格中,我都有多个脚本和触发器。

在Dashboard2 的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();

我想做的是当有人在 Dashboard2 中编辑时,它会更新 Dashboard1 中的一行。

当我尝试触发事件时,它抛出错误

TypeError:无法调用 null 的方法“getRange”。 (第 2 行,文件“常量”,项目“XXXXXX”)

我发现这个错误存在是因为 Dashboard2 中没有工作表“Categorias”。如果我在 Dashboard2 中创建工作表“Categorias”,它工作正常。

我的问题是:

  1. 这是正常行为?为什么当我运行代码时,它会尝试从 Dashboard1 中的 Constants.gs 初始化变量,因为它们存在于 Dashboard2 中?

  2. 有解决办法吗?或者只是我不能这样做?

我尝试在 .gs 文件中使用不同的名称,但没有成功。还尝试删除文件 Constants.gs 并将所有变量放在 Code.gs 中。

最佳答案

来自OP的问题

My question is:

  1. This is a normal behavior? Why when I run the code, it tries to initialize the variable from Constants.gs in Dashboard1 as they exist in Dashboard2?

是的,这种行为是“正常的”。

  1. There is a solution for this? Or just I can't do this?

有很多解决方案。 Google Apps 脚本项目的一些“经验”规则可以帮助您决定如何进行:

  1. 减少全局范围内的变量声明,当您在全局范围内声明变量时,限制它们分配文字。
  2. 仅将独立项目用于库,但如果您确实需要将有界项目用作库,请不要在库函数上使用“getActive”方法,而是将“active”对象作为参数添加到需要它们的库函数。

相关

关于javascript - 类型错误 : Method "getRange" of null when using multiple scripts (Libraries) in Google scripts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57531735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com