Javascript 谷歌脚本代码在其他工作表中不起作用
这是我当前在mainWsName工作表中运行的代码。它基本上是一个相关的下拉列表。 我还希望相同的脚本/代码在另一个工作表中工作。我试着把所有的变量都换成新的表格。但是脚本只在其中一张表中起作用。我希望两张纸都能用。Javascript 谷歌脚本代码在其他工作表中不起作用,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,这是我当前在mainWsName工作表中运行的代码。它基本上是一个相关的下拉列表。 我还希望相同的脚本/代码在另一个工作表中工作。我试着把所有的变量都换成新的表格。但是脚本只在其中一张表中起作用。我希望两张纸都能用。 var mainWsName=“Inkoop”; var sittardWsName=“Sittard”; var-merkColumn=4; var模型列=5; var分类柱=6; var ws=SpreadsheetApp.getActiveSpreadsheet().ge
var mainWsName=“Inkoop”;
var sittardWsName=“Sittard”;
var-merkColumn=4;
var模型列=5;
var分类柱=6;
var ws=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(mainWsName);
var wsSittard=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sittardWsName);
var arraySittard=wsSittard.getRange(2,1,wsSittard.getLastRow()-1,3.getValues();
函数分类(){
}
功能OneEdit(e){
var-activeCell=e.range;
var val=activeCell.getValue();
var r=activeCell.getRow();
var c=activeCell.getColumn();
var wsName=activeCell.getSheet().getSheetName()
if(wsName==mainWsName&&c==merkColumn&&r>1){
如果(val==“”){
getRange(r,modelColumn).clearContent();
getRange(r,modelColumn).clearDataValidations();
getRange(r,categorieColumn).clearContent();
}否则{
getRange(r,modelColumn).clearContent();
var filteraysittard=arraySittard.filter(函数(o){returno[0]==val});
var listToApply=filterarysittard.map(函数(o){returno[1]});
var cell=ws.getRange(r,modelColumn);
applyValidationToCell(listToApply,cell);
}
}
}//结束OneEdit
函数applyValidationToCell(列表,单元格){
var rule=SpreadsheetApp.newDataValidation()
.RequiremeEinList(列表)
.setAllowInvalid(false)
.build();
cell.setDataValidation(规则);
}
之所以只在一张工作表中工作,是因为您告诉程序只在一张工作表中工作
如果查看您的onEdit(e)
函数,您只需要修改一张工作表,ws
。因此,您需要更改变量命名,以便能够修改两个工作表:
修改脚本
基本上不是静态地获取要修改的工作表(ws
),而是从以下位置检索它:
我就是这样解决的
var mainWsName=“Inkoop”;
var wsVerkoop=“Verkoop”
var sittardWsName=“Sittard”;
var-merkColumn=4;
var模型列=5;
var分类柱=6;
var ws=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(mainWsName);
var wVerkoop=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(wsVerkoop);
var wsSittard=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sittardWsName);
var arraySittard=wsSittard.getRange(2,1,wsSittard.getLastRow()-1,3.getValues();
函数分类(){
}
功能OneEdit(e){
var-activeCell=e.range;
var val=activeCell.getValue();
var r=activeCell.getRow();
var c=activeCell.getColumn();
var wsName=activeCell.getSheet().getSheetName()
if(wsName==mainWsName&&c==merkColumn&&r>1){
如果(val==“”){
getRange(r,modelColumn).clearContent();
getRange(r,modelColumn).clearDataValidations();
getRange(r,categorieColumn).clearContent();
}否则{
getRange(r,modelColumn).clearContent();
var filteraysittard=arraySittard.filter(函数(o){returno[0]==val});
var listToApply=filterarysittard.map(函数(o){returno[1]});
var cell=ws.getRange(r,modelColumn);
applyValidationToCell(listToApply,cell);
}
}
if(wsName==wsVerkoop&&c==merkColumn&&r>1){
如果(val==“”){
getRange(r,modelColumn).clearContent();
getRange(r,modelColumn).clearDataValidations();
getRange(r,categorieColumn).clearContent();
}否则{
getRange(r,modelColumn).clearContent();
var filteraysittard=arraySittard.filter(函数(o){returno[0]==val});
var listToApply=filterarysittard.map(函数(o){returno[1]});
var cell=wVerkoop.getRange(r,modelColumn);
applyValidationToCell(listToApply,cell);
}
}
}//结束OneEdit
函数applyValidationToCell(列表,单元格){
var rule=SpreadsheetApp.newDataValidation()
.RequiremeEinList(列表)
.setAllowInvalid(false)
.build();
cell.setDataValidation(规则);
}
如果您能简要描述一下所做的更改,那就太好了
var mainWsNames = ["Inkoop", "Verkoop"]; // Changed to an array of names to modify
var sittardWsName = "Sittard";
var merkColumn = 4;
var modelColumn = 5;
var categorieColumn = 6;
var wsSittard = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sittardWsName);
var arraySittard = wsSittard.getRange(2,1,wsSittard.getLastRow()-1,3).getValues();
function categorie(){
}
function onEdit(e){
var activeCell = e.range;
var val = activeCell.getValue();
var r = activeCell.getRow();
var c = activeCell.getColumn();
var ws = activeCell.getSheet();
var wsName = ws.getSheetName();
// Check if the name of the worksheet is in the array previously defined with indexOf
if(mainWsName.indexOf(wsName) != -1 && c == merkColumn && r > 1){
if(val === ""){
ws.getRange(r ,modelColumn).clearContent();
ws.getRange(r ,modelColumn).clearDataValidations();
ws.getRange(r ,categorieColumn).clearContent();
} else{
ws.getRange(r ,modelColumn).clearContent();
var filterarraySittard = arraySittard.filter(function(o){return o[0] === val});
var listToApply = filterarraySittard.map(function(o){ return o[1]});
var cell = ws.getRange(r ,modelColumn);
applyValidationToCell(listToApply, cell);
}
}
} // end onEdit
function applyValidationToCell(list,cell){
var rule = SpreadsheetApp.newDataValidation()
.requireValueInList(list)
.setAllowInvalid(false)
.build();
cell.setDataValidation(rule);
}