2

我正在 Google 表格中创建一个模板,用户可以在其中粘贴 Excel 中的数据。我有一个确保输入帐户有效的脚本。

该模板包含数据验证标准,如果根据数据验证规则,任何输入无效,我希望我的脚本能够提取。该规则要求输入范围内的匹配数据。

仅供参考 - 我对这些东西很陌生。

我玩过 SpreadsheetApp.newDataValidation() 中包含的子方法,但我没有找到我要找的东西。我尝试实现该.setAllowInvalid(false)方法以防止无效输入,但是当数据从 Excel 复制到范围时,这不会提醒用户 - 即使范围中的数据验证规则未更改。

目前,我让脚本使用比较的数据范围检查每个单元格,但这需要很长时间。数据验证规则中的某些数据范围有超过 5000 个单元格,如果用户输入超过 400 行,脚本可能需要 10 分钟以上。

function setDataValidation(sheet, fRow, fCol, numRows, numColumns, account, valid) {
  var data = sheet.getRange(fRow, fCol, numRows, numColumns);
  var rule = SpreadsheetApp.newDataValidation()
    .requireValueInRange(data, true)//(range, dropdown Boolean)
    .setAllowInvalid(valid)
    .build()

   InputSht.getRange(
    FirstDataRowI,
    InputSht.createTextFinder(account).findNext().getColumn(), 
    LastRowI)
   .setDataValidation(rule)
}

如果包含数据验证规则的范围内的输入无效,我希望我的脚本返回“无效”。

就像是:

function fillData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var lastRow = ss.getLastRow()

  for (i = 0; i < lastRow; i++) {
    aData[i] = isValid(sheet.getRange(i+1, 1))
  }

  for(i=0;i<aData.length;i++) {
    if (aData[i] == false) {
      //here I'll place my code to determine my final output
    }
  }
}

function isValid(valid) {
  var valid = true
  //code that sets valid to false if invalid
  return valid
}

显然我不知道我在说什么,但希望有人对此有所了解。

有什么想法吗?

4

0 回答 0