Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Javascript 谷歌脚本代码在其他工作表中不起作用_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 谷歌脚本代码在其他工作表中不起作用

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

这是我当前在mainWsName工作表中运行的代码。它基本上是一个相关的下拉列表。 我还希望相同的脚本/代码在另一个工作表中工作。我试着把所有的变量都换成新的表格。但是脚本只在其中一张表中起作用。我希望两张纸都能用。

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);
}