首页 > 解决方案 > 数据验证脚本循环

问题描述

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

例子:

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-scriptgoogle-sheetsprocessing-efficiency

解决方案


发现:

  • 您对这部分的循环for ( var c = 16;c <= 25; c) {有一个错误的迭代,c而不是 using 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);
  }
}

样本:

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

在此处输入图像描述


推荐阅读