我有兴趣使用Google Scripts自动化Google电子表格与其他Google电子表格的数据验证。我似乎找不到使用openById
方法引用另一个电子表格范围的方法。有什么想法吗?
function externalSheetDataValidation() {
var cell = SpreadsheetApp.getActiveRange();
//var dataValidationSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("dataValidationRules");
//var dataValidationSheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/10Z2s1bSRIhZzBBrMfPmhEphnPx-kJdV3LLlbv0L59g8/edit#gid=0");
var dataValidationSheet = SpreadsheetApp.openById("10Z2s1bSRIhZzBBrMfPmhEphnPx-kJdV3LLlbv0L59g8");
var sheet = dataValidationSheet.getSheets()[0];
var range = SpreadsheetApp.getActiveSheet().getRange("A3:A4");
var rule = SpreadsheetApp.newDataValidation()
.requireValueInRange(range, true)
.setAllowInvalid(false)
.build();
cell.setDataValidation(rule);
Logger.log(dataValidationSheet.getName());
}
答案 0 :(得分:0)
如果我理解正确,您遇到的问题是从外部电子表格中选择数据范围?
我假设dataValidationSheet应该是外部工作表。看起来你走在了正确的轨道上。看起来问题是,一旦你抓住它,你期望工作表是活跃的。
试试这个改变:
var range = sheet.getRange("A3:A4");
目前,您正在抓取外部工作表,但随后从已经处于活动状态的工作表中获取范围。希望这有帮助!