我正在尝试让以下公式起作用:
function setDataValid(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 == 2 && SpreadsheetApp.getActiveSheet().getName() == 'Local' ) {
var range = SpreadsheetApp.getActiveSheet().getRange(aCell.getRow(), aColumn + 1);
var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
setDataValid(range, sourceRange)
}
}
当在调试onEdit()时,setDataValid(range, sourceRange)中的sourceRange显示为null。由于范围在我的工作表“Local”中,我正在尝试将getActiveSpreadsheet()更改为按名称获取电子表格。有谁能帮忙吗?
调试onEdit()时,发现setDataValid(range, sourceRange)中的sourceRange为null。由于范围在我的“Local”工作表中,我尝试通过名称获取电子表格来替换getActiveSpreadsheet()。请问是否有人可以提供帮助?
getActive
和getActiveSpreadsheet
是同义词。更倾向使用前者,因为后者太类似于getActiveSheet
,而该方法不返回Spreadsheet
对象。 - tehhowchgetActiveSpreadsheet().getSheetByName(xxx)
目前会返回一个错误。使用getActive().getSheetByName()
可以正常工作。 - crthompson