Google App脚本忽略数据验证错误

时间:2019-02-01 13:58:27

标签: javascript validation google-apps-script google-sheets

我有一些表格具有数据验证规则,可用作下拉菜单。 尝试将其他(未经验证的)数据插入这些单元格时,我的代码现在创建错误。

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

  

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

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

function CountCol(ss, col){var vals = ss.getRange(col+'1:'+col).getValues();var last = vals.filter(String).length;return last+1;}

此函数返回已声明的Column的第一个空行的行号。不知道这如何违反数据验证规则,就像我的代码中一样,我正在对列“ 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");

1 个答案:

答案 0 :(得分:0)

您尝试过简单的try / catch吗?

try {
  SpreadsheetApp.doThing()
} catch (e) {
  // ignore
}

您还可以通过调用setDataValidation(rule)来允许任何输入,然后在插入所需的数据后将数据验证设置回旧的方法来禁用某一范围的数据验证。

此页面包含有关如何执行此操作的示例:https://developers.google.com/apps-script/reference/spreadsheet/data-validation