如何使用Google脚本在数据验证字段中识别数据是否无效?

时间:2019-07-10 00:15:46

标签: google-apps-script google-sheets-api

我正在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
}

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

有什么想法吗?

0 个答案:

没有答案