【问题标题】:Data Validation Script数据验证脚本
【发布时间】:2017-05-26 23:30:16
【问题描述】:

我正在使用:

function datavalidation(event) {
  var ColA = 1;  
  var changedRange = event.source.getActiveRange();
  if (changedRange.getColumn() == ColA) { 
  var destinationRange = event.source.getActiveSheet().getRange(changedRange.getRow(),ColA+1);

  var sourceRange = event.source.getActiveSheet().getRange(changedRange.getRow(),ColA+2,changedRange.getColumn(),10);
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange).build();
  var rules = destinationRange.getDataValidations();
  for (var i = 0; i < rules.length; i++) {
  for (var j = 0; j < rules[i].length; j++) {
  rules[i][j] = rule;
   }
 }
 destinationRange.setDataValidations(rules);
}
}

在编辑第 1 列时在第 2 列中创建下拉菜单。它在大多数情况下工作正常,但是当我从第 2 列中删除任何数据验证时,它会做一些意想不到的事情。当我这样做时,可能永远不会,它会在第 2 列的第一行运行脚本,即使我做了不更改第 1 列。只是想了解这里发生了什么。谢谢

在此处查看公共文档:https://docs.google.com/spreadsheets/d/1kYncT7bOYWp73yr3Lh4LQreTpRFc8lZL3siqpP4xsvA/edit?usp=sharing

【问题讨论】:

  • 我建议您查看DataValidationDataValidationBuilder 以了解验证在您的代码中是如何工作的。它提供了一些示例代码来了解如何使用它。关于下拉菜单的问题,请尝试检查这些问题Data Validation using Apps Scriptdependent drop downs in Google Sheets? 是否可以帮助您。
  • 感谢您的建议。虽然这个脚本似乎在我的测试表中工作,但它在其他工作表中不起作用。数据验证部分是正确的,但我认为主要问题是:“.getRange(changedRange.getRow(),ColA+2,changedRange.getColumn(),10);”我相信我需要使用不同的方法来设置源范围。

标签: google-apps-script google-sheets


【解决方案1】:

设置源范围的方法不正确。

function datavalidation(event) {
  var ColA = 1;  
  var changedRange = event.source.getActiveRange();
  if (changedRange.getColumn() == ColA) { 
  var destinationRange = event.source.getActiveSheet().getRange(changedRange.getRow(),ColA+1);

  var sourceRange = event.source.getActiveSheet().getRange(changedRange.getRow(),2,1,10);
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange).build();
  var rules = destinationRange.getDataValidations();
  for (var i = 0; i < rules.length; i++) {
  for (var j = 0; j < rules[i].length; j++) {
  rules[i][j] = rule;
   }
 }
 destinationRange.setDataValidations(rules);
}
}

【讨论】:

    猜你喜欢
    • 2021-12-05
    • 2019-02-20
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多