Google apps script Google应用程序脚本中RequireRewaeInRange的参数不能为null
我有一个脚本,它在我的一些电子表格中工作得很好,但在其他电子表格中却失败了 代码如下:Google apps script Google应用程序脚本中RequireRewaeInRange的参数不能为null,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个脚本,它在我的一些电子表格中工作得很好,但在其他电子表格中却失败了 代码如下: function depDrop_(range, sourceRange){ var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, true).build(); range.setDataValidation(rule); } function onEdit (){ var aCell = S
function depDrop_(range, sourceRange){
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, true).build();
range.setDataValidation(rule);
}
function onEdit (){
var aCell = SpreadsheetApp.getActiveSheet().getActiveCell();
var aColumn = aCell.getColumn();
if (aColumn == 7 && SpreadsheetApp.getActiveSheet()){
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}
else if (aColumn == 8 && SpreadsheetApp.getActiveSheet()){
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}
else if (aColumn == 9 && SpreadsheetApp.getActiveSheet()){
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
depDrop_(range, sourceRange);
}
}
此脚本在我的一些电子表格中运行良好,但在其他电子表格中,它显示以下错误:
Argument cannot be null: range (line 2, file "Code")
有人能帮我解释一下吗?想想这句台词
sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
如果没有名称与aCell
的内容匹配的命名范围,则sourceRange将为null,然后您将在尝试使用requireRequireWainRange(sourceRange,true)
构建验证规则时出错。所以,在建立规则之前检查一下。还有其他一些小问题会使脚本变得混乱:
- 在每个条件下检查
,都是毫无意义的。如果由于某种原因它是空的,那么在&&SpreadsheetApp.getActiveSheet()
函数的第一行就会有一个错误。在任何情况下,调用onEdit
触发器时,它都不会为null李>onEdit
- 所有三个条件语句的内容都是相同的,因此它们可以组合在一起
depDrop\uuz
:
function onEdit (){
var aCell = SpreadsheetApp.getActiveSheet().getActiveCell();
var aColumn = aCell.getColumn();
if (aColumn == 7 || aColumn == 8 || aColumn == 9) {
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
if (range) {
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
if (sourceRange) {
depDrop_(range, sourceRange);
}
}
}
}
感谢您的精彩解释,就脚本的功能而言,如果我在第7列选择某个值,将根据第7列上的值在第8列上自动创建一个下拉列表,在第9列上,下拉列表将取决于第8列的值。