【问题标题】:Data validation Script loop数据验证脚本循环
【发布时间】:2021-12-05 18:02:16
【问题描述】:

我有一个代码可以在单元格旁边的范围内创建数据验证。

示例:

var cellC4 = cell.getRange('F11');
var range = SpreadsheetApp.getActive().getRange('MAIN!AG11:AG11');
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
cellC4.setDataValidation(rule);

var cellC5 = cell.getRange('F12');
var range = SpreadsheetApp.getActive().getRange('MAIN!AG12:AG12');
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
cellC5.setDataValidation(rule);

var cellC6 = cell.getRange('F13');
var range = SpreadsheetApp.getActive().getRange('MAIN!AG13:AG13');
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
cellC6.setDataValidation(rule);

var cellC7 = cell.getRange('F14');
var range = SpreadsheetApp.getActive().getRange('MAIN!AG14:AG14');
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
cellC7.setDataValidation(rule);

有人可以帮我正确地做吗

我被困在这里:

function onOpen(){

var ss0 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAIN');  
var EndRow = ss0.getLastRow();

for ( var c = 16;c <= 25; c) {
for ( var i = 11;i <= EndRow; i++ ) {


//►PO# VALIDATION►

var range1 = ss0.getRange(i, c);
var rule1 = SpreadsheetApp.newDataValidation().requireValueInRange(range1).build();
ss0.getRange(i, 5).setDataValidation(rule1);
}}}

【问题讨论】:

标签: google-apps-script google-sheets processing-efficiency


【解决方案1】:

调查结果:

  • 这部分的循环for ( var c = 16;c &lt;= 25; c) { 有一个 使用 c 而不是使用 c++ 进行错误迭代。因此,这个循环 永远不会结束运行。

建议:

==更新===

您可以尝试以下示例脚本:

function onOpen(){
  var ss0 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MAIN');  
  var EndRow = ss0.getLastRow();
  for(row=11; row<=EndRow; row++){
    var data = ss0.getRange("P"+row+":Y"+row).getDisplayValues();
    var rule = SpreadsheetApp.newDataValidation().requireValueInList(data[0]).build();
    ss0.getRange(row,5).setDataValidation(rule);
  }
}

示例:

onOpen() 函数运行完成后,第 5 列或 E 列的结果

【讨论】:

  • 我的目标是从相邻范围 P:Y 中获取第 5 列 (E) 上的验证列表,每一行是一组不同的验证项。当我尝试对其进行编码时,验证列表将只有 10 个项目中的 1 个 (p:y)。
  • 示例表:docs.google.com/spreadsheets/d/… 我的目标是在 E11 上获得 P11:Y11 范围,在 E12 上获得 P12:Y12 范围.....感谢您抽出宝贵时间!
  • @OPSMHeras 感谢您的评论。我已经在上面的答案中更新了脚本。如果它回答了您的问题,您可能需要单击左侧的接受按钮(复选图标)。通过这样做,社区中可能与您有同样担忧的其他人会知道他们的问题可以得到解决,并且他们会在搜索时轻松看到此帖子。
  • 上帝保佑你!,工作出色!再次感谢您花时间解决这个问题。
猜你喜欢
  • 2017-05-26
  • 1970-01-01
  • 2013-08-29
  • 2012-10-09
  • 2021-05-21
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多