Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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/5.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 如何在单元格下拉函数的数据验证中添加IF/ELSE函数?_Javascript_Google Apps Script - Fatal编程技术网

Javascript 如何在单元格下拉函数的数据验证中添加IF/ELSE函数?

Javascript 如何在单元格下拉函数的数据验证中添加IF/ELSE函数?,javascript,google-apps-script,Javascript,Google Apps Script,我正在尝试使用If/Else函数创建一个单元格内数据验证下拉菜单(在谷歌电子表格中) 实际上,我有两个列表范围,从中我只想显示一个由变量单元格决定的列表 听起来是这样的:如果A1是ABC,那么在单元格下拉列表中显示范围1;如果A1是XYZ,那么在单元格下拉列表中显示范围2 这是密码。让我知道我做错了什么 function dataval (){ var cell = SpreadsheetApp.getActive().getRange('B12'); if (cell=="Price"

我正在尝试使用If/Else函数创建一个单元格内数据验证下拉菜单(在谷歌电子表格中)

实际上,我有两个列表范围,从中我只想显示一个由变量单元格决定的列表

听起来是这样的:如果A1是ABC,那么在单元格下拉列表中显示范围1;如果A1是XYZ,那么在单元格下拉列表中显示范围2

这是密码。让我知道我做错了什么

  function dataval (){

var cell = SpreadsheetApp.getActive().getRange('B12');

if (cell=="Price") {
 var cell = SpreadsheetApp.getActive().getRange('C12');
 var range = SpreadsheetApp.getActive().getRange('D12:D19');
 var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
 cell.setDataValidation(rule);
};

if (cell=="Technical") {
 var cell = SpreadsheetApp.getActive().getRange('C12');
 var range = SpreadsheetApp.getActive().getRange('E12:E19');
 var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
 cell.setDataValidation(rule);
};
};

附言:我对编码还不熟悉&这是我第一次在软件上发表文章

代码的一个问题是比较
单元格==“Price”
。变量
cell
是类的对象,而不是字符串。要获取它包含的值,您需要
cell.getValue()
,因此比较将是
cell.getValue()=“Price”

您还应该处理
B12
内容更改的事件。一种简单的方法是将数据验证代码放入触发器中,并检查编辑是否为B12:例如

if (e.range.getA1Notation() == 'B12') {
  // change data validation
}

如果目标只是有一个规则,强制输入在两个范围中的一个范围内(取决于另一个单元格),则可以不使用脚本,使用带有
If
index
的自定义公式。但这并不能提供价值的下降

代码的一个问题是比较
单元格==“Price”
。变量
cell
是类的对象,而不是字符串。要获取它包含的值,您需要
cell.getValue()
,因此比较将是
cell.getValue()=“Price”

您还应该处理
B12
内容更改的事件。一种简单的方法是将数据验证代码放入触发器中,并检查编辑是否为B12:例如

if (e.range.getA1Notation() == 'B12') {
  // change data validation
}

如果目标只是有一个规则,强制输入在两个范围中的一个范围内(取决于另一个单元格),则可以不使用脚本,使用带有
If
index
的自定义公式。但这并不能提供价值的下降

谢谢,扎克。你能解释一下“geta1符号”吗?首先,我在代码中尝试了它,但把一切都搞糟了。谢谢,扎克。你能解释一下“geta1符号”吗?首先,我在代码中尝试了它,但把一切都搞糟了。