簡體   English   中英

Google Apps腳本/ Google Sheet錯誤? 引用命名范圍的復制/重新設置數據驗證不適用於重復的圖紙

[英]Google Apps Script/Google Sheet Bug? Copying/Re-Setup Data Validation refering to named range does not work on duplicated Sheets

在此查看此示例

情況:通過直接引用(A1Notation)對引用范圍的單元格進行數據驗證,對引用命名范圍的其他單元格進行數據驗證。

兩者均可。

復制工作表時,兩者仍然有效。 但是,當手動將數據驗證重置為相同的范圍或通過我的腳本進行設置時,數據驗證通過命名范圍引用的單元格的數據驗證將不起作用,也無法通過命名范圍引用進行重新設置手動或通過腳本復制(.getDataValidation / .setDataValidation)。

查看示例-在Sheet1上運行腳本函數cp_dataValidation(),然后將Sheet1的副本作為活動工作表運行。 然后單擊單元格中的數據驗證下拉菜單。

在此處輸入圖片說明

最終,我的目標是通過腳本在一個重復的工作表上從一個范圍到另一個范圍執行數據驗證(指一個命名范圍)的副本。

function cp_dataValidation() {
  var sheet = SpreadsheetApp.getActiveSheet()

  //cell with data validation referring to a named range
  var named_range_tmpl = sheet.getRange("B2");
  //cell with data validation referring to a range via A1Notation
  var range_tmpl = sheet.getRange("C2");

  //target cells to copy dataValidation to
  var nr_target = sheet.getRange("D2");
  var r_target = sheet.getRange("E2");


  nr_target.setDataValidation(named_range_tmpl.getDataValidation());
  r_target.setDataValidation(range_tmpl.getDataValidation());


  Logger.log(JSON.stringify(named_range_tmpl.getDataValidation(), null, 2));
  Logger.log(JSON.stringify(range_tmpl.getDataValidation(), null, 2));
}
  • 您要復制數據驗證,包括命名范圍作為值。

如果我的理解是正確的,該解決方法如何? 看來nr_target.setDataValidation(named_range_tmpl.getDataValidation())不能用於其他工作表的命名范圍。 因此,作為一種解決方法,如何使用copyTo()方法?

修改后的腳本:

var sheet = SpreadsheetApp.getActiveSheet();
var source = sheet.getRange("B2:C2");
var target = sheet.getRange("D2:E2");
source.copyTo(target, SpreadsheetApp.CopyPasteType.PASTE_DATA_VALIDATION);
target.clearContent(); // or target.clear({contentsOnly: true}); // Added

注意:

  • 請測試兩個工作表的腳本。
  • 如果要復制值和數據驗證,請使用source.copyTo(target)而不是source.copyTo(target, SpreadsheetApp.CopyPasteType.PASTE_DATA_VALIDATION)

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM