簡體   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