Javascript Google应用程序脚本忽略数据验证错误

Javascript Google应用程序脚本忽略数据验证错误,javascript,validation,google-apps-script,google-sheets,Javascript,Validation,Google Apps Script,Google Sheets,我有一些工作表,其中有数据验证规则可作为下拉列表使用。 我的代码现在在尝试将其他(未验证的)数据插入这些单元格时产生错误 我正在寻找一种方法来忽略数据验证规则,并在不更改已设置的数据验证规则的情况下插入数据。我只想忽略应用程序脚本错误 在单元格U440中输入的数据违反了在此单元格上设置的数据验证规则 代码错误所在的行没有数据验证问题,因此我不完全确定如何处理错误 function CountCol(ss, col){var vals = ss.getRange(col+'1:'+col).get

我有一些工作表,其中有数据验证规则可作为下拉列表使用。 我的代码现在在尝试将其他(未验证的)数据插入这些单元格时产生错误

我正在寻找一种方法来忽略数据验证规则,并在不更改已设置的数据验证规则的情况下插入数据。我只想忽略应用程序脚本错误

在单元格U440中输入的数据违反了在此单元格上设置的数据验证规则

代码错误所在的行没有数据验证问题,因此我不完全确定如何处理错误

function CountCol(ss, col){var vals = ss.getRange(col+'1:'+col).getValues();var last = vals.filter(String).length;return last+1;}
此函数用于返回已声明列的第一个空行的行号。不确定这是如何违反数据验证规则的,因为在我的代码中,我正在计算列“C”,数据验证在列“O”、“P”、“Q”、“U”和“V”上,验证错误列是“U”

var row_data = [[""], [""]]; //example data
var team = "12345645647abcdef"; //example spreadsheet id
var sn = "Sheet1"; //example sheet name
var caseload = SpreadsheetApp.openById(team).getSheetByName(sn);
var append = CountCol(caseload, "C");
Logger.log("adding to row: "+String(append));
try{
  caseload.getRange(append, 1, 1, row_data[0].length).setValues(row_data); //this is where the error should be. The output manages to write most colums but stops before writing column 'U'.
}catch(e){
  Browser.msgBox(e);
  Logger.log("failed to append: "+String(append)+ ":" + String(row_data[0][0]) + ": " + String(row_data[0][1]));
}
caseload.getRange(append, 1, 1, row_data[0].length).setBackground("red");

你试过简单的试一试吗

try {
  SpreadsheetApp.doThing()
} catch (e) {
  // ignore
}
您还可以通过调用setDataValidation(rule)来禁用范围上的数据验证,以允许任何输入,然后在插入所需数据后将数据验证设置回旧的验证


本页提供了一些示例,说明如何做到这一点:

我非常确定,这样仍然无法插入数据。我希望插入数据,而不考虑数据验证。还更新了我的问题,因为错误行为奇怪,请添加一个,因为这需要一个谷歌数据验证表我不能创建一个MCVE,我发布的代码是测试此功能所需的100%的代码。您只需要创建一个带有数据验证的工作表,并确保行数据[x][y]违反该规则。@ScottPaterson,您能解决此问题吗?