我正试图从另一个工作表中的一个区域为一个单元格构建数据验证。我已经尝试了下面的代码,并且我继续得到这个错误"&";。如有任何帮助,我们将不胜感激。
function dataValidations(){
var builder = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Basic Info");
var invMgmt = SpreadsheetApp.openById("1eGNsJ2iB_IOzcfJe7DyFV_0WhzdQhvW2Lqdzfta2eV4");
var partners = invMgmt.getSheetByName("Partners and Locations").getRange(2,1,75,1).getValues();
var partnerRule = SpreadsheetApp.newDataValidation().requireValueInRange(partners).build();
var origin = builder.getRange("B4");
origin.setDataValidation(partnerRule);
}
在requireValueInRange(range)
的情况下,range
是范围对象。在脚本中,getValues()
检索到的值是二维数组。我认为这可能是你问题的原因。那么,为了消除这个问题,下面的修改如何?
发件人:
var partners = invMgmt.getSheetByName("Partners and Locations").getRange(2,1,75,1).getValues();
var partnerRule = SpreadsheetApp.newDataValidation().requireValueInRange(partners).build();
收件人:
var partners = invMgmt.getSheetByName("Partners and Locations").getRange(2,1,75,1).getValues();
var partnerRule = SpreadsheetApp.newDataValidation().requireValueInList(partners.flat()).build(); // Modified
注:
- 当
SpreadsheetApp.openById("###").getSheetByName("###").getRange(###)
用于requireValueInRange
时,不会发生错误,并且检索到的值与其他电子表格中的值相同。但当我在单元格中确认数据验证时,发现使用了SpreadsheetApp.getActiveSpreadsheet()
而不是SpreadsheetApp.openById("###")
。因此,在这种情况下,使用requireValueInList
似乎是合适的
参考文献:
- requireValueInRange(范围(
- requireValueInList(值(
- flat((