繁体   English   中英

如何从 Google App Scripts 中的另一个工作表中提取数据验证

[英]How to pull data validation from another sheet in Google App Scripts

我正在尝试为不同工作表中范围内的单元格构建数据验证。 我试过下面的代码,但我继续收到这个错误“”。 任何帮助将不胜感激。

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 requireValueInRange(range)的情况下, range是范围 object。在您的脚本中, 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是合适的。

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM