google-apps-script - 多个 onEdit 脚本,但在第 2 行出现错误
问题描述
我无法弄清楚我做错了什么。我还是新手,所以有很多错误的地方。我正在尝试运行同一脚本的两个版本。选中一个框时,如果它在 FI 列中,则希望函数 7R 运行,但如果选中的框在 K 列中,我希望函数 8R 运行。我使用具有类似问题的线程来尝试组合这两个脚本,但在第 2 行中不断出现错误。
我得到的错误是 Missing ;声明之前:第 2 行
这是我所拥有的:
function onEdit(e) {
8R();
7R();
}
function 8R() {
//Get the sheet you want to work with.
var editrange = {
top : 2,
bottom : 260,
left : 11,
right : 11};
//getRow() and not getrow()
var thisrow = e.range.getRow();
if (thisrow < editrange.top || thisrow > editrange.bottom) return;
//getColumn() and not getcolumn()
var thiscolumn = e.range.getColumn();
if (thiscolumn < editrange.left || thiscolumn > editrange.right) return;
//Line that replaces the erroneous 'var ss = e.range.getSheet()';
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Responsible");
//Grab the entire Range, and grab whatever values you need from it. EX:
rangevalues
var range8 = sheet.getRange("K3:K90");
var range28 = sheet.getRange("M3:M90");
var range2values8 = range28.getValues();
var rangevalues8 = range8.getValues();
//Loops through range results
for (var i in rangevalues8) {
Logger.log("rangevalues8["+i+"]["+0+"] is:"+rangevalues8[i][0]);//Added
//Set the rules logic
if (rangevalues8[i][0] == true) { //Modified
//Set the cell
range2values8[i][0] += 1; //Directly add 1 to range2values
Logger.log(range2values8);//Added
}
}
//copy new information
var destination = ss.getSheetByName('Compiled Data');//whatever page
var destCell8 = destination.getRange("I3:I90");
destCell8.setValues(range2values8);
//clear checkboxes
var cleaning = ss.getSheetByName('Asset Bank');
var cleaningcell8 = cleaning.getRange("A3:A90").getValues();
range8.setValues(cleaningcell8);
}
function 7R() {
//Get the sheet you want to work with.
var editrange = {
top : 2,
bottom : 260,
left : 6,
right : 6};
//getRow() and not getrow()
var thisrow7 = e.range.getRow();
if (thisrow7 < editrange.top || thisrow7 > editrange.bottom) return;
//getColumn() and not getcolumn()
var thiscolumn7 = e.range.getColumn();
if (thiscolumn7 < editrange.left || thiscolumn7 > editrange.right) return;
//Line that replaces the erroneous 'var ss = e.range.getSheet()';
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Responsible");
//Grab the entire Range, and grab whatever values you need from it. EX:
rangevalues
var range7 = sheet.getRange("F3:F90");
var range27 = sheet.getRange("H3:H90");
var range2values7 = range27.getValues();
var rangevalues7 = range7.getValues();
//Loops through range results
for (var i in rangevalues7) {
Logger.log("rangevalues7["+i+"]["+0+"] is:"+rangevalues7[i][0]);//Added
//Set the rules logic
if (rangevalues7[i][0] == true) { //Modified
//Set the cell
range2values7[i][0] += 1; //Directly add 1 to range2values
Logger.log(range2values7);//Added
}
}
//copy new information
var destination = ss.getSheetByName('Compiled Data');//whatever page
var destCell7 = destination.getRange("I93:I180");
destCell7.setValues(range2values7);
//clear checkboxes
var cleaning = ss.getSheetByName('Asset Bank');
var cleaningcell7 = cleaning.getRange("A3:A90").getValues();
range7.setValues(cleaningcell7);
}
这是我正在处理的所有相关信息的副本表的链接:https ://docs.google.com/spreadsheets/d/1PWaWm7AryljOMd5Aq1O2RSADyRFNVZbUDqKO__SzW2w/edit?usp=sharing
解决方案
Javascript 变量和函数名称不能以数字开头。将8R
and替换7R
为有效标识符,例如func8R
and func7R
。
除此之外,您8R
和7R
函数会尝试立即访问一个e.range
变量,但该变量并未在任何地方定义。我假设您正在尝试读取onEdit
事件参数,但是您必须将其传递给您的函数并定义它们的参数,例如
function onEdit(e) {
f8R(e);
f7R(e);
}
function f8R(e) {
//... continue (remember to also declare on f7R)
如果您想手动测试此功能,您必须填写此e
参数,就像您在电子表格上实际更改某些内容时环境所做的那样。我喜欢通过编写另一个“调用者”函数来做到这一点,如下所示:
function testOnEdit() {
onEdit({range: SpreadsheetApp.getActiveSheet().getRange('F2')});
}
推荐阅读
- google-cloud-pubsub - 如何推送到 GCP 发布/订阅中的多个端点?
- javascript - Pascal Case(或 Upper Camel Case),但允许使用 HTMLInputElement 之类的名称?
- python - 使用 Python 访问 Youtube 数据 API 时出错
- r - 如何在零膨胀负二项式模型中预测具有偏移量的新数据
- c - cgo 与使用线程本地存储的 C 库交互
- python - 使用 Python Websockets 库的多线程服务器
- react-native - 排毒错误:层次结构中找不到匹配的视图:(标签值:是“电子邮件”并且视图具有有效的可见性=可见)在 React Native 中
- string - 是否可以使用多个逗号分隔的字符串作为 TypeScript 类型?
- tensorflow - DeepLabV3,珊瑚的分割和分类/检测
- java - 致命异常:java.lang.RuntimeException - 由 java.lang.IllegalStateException 引起。应为 BEGIN_ARRAY,但为 BEGIN_OBJECT