我正在 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
}
显然我不知道我在说什么,但希望有人对此有所了解。
有什么想法吗?