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

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

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

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

The data that you entered in cell U440 violates the data validation rules set on this cell.

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

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”列以及验证错误列上是“你”。

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/catch?

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

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

此页面有关于如何做到这一点的示例:https://developers.google.com/apps-script/reference/spreadsheet/data-validation

关于javascript - Google App 脚本忽略数据验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54481010/

相关文章:

javascript - IDEA 警告在 JavaScript 正则表达式中使用花括号。可以吗?

android - 从 Android 应用程序读取 Google 电子表格并列出该数据?

javascript - 如何在 Google Apps 脚本中动态创建新工作表时附加第一行数据

mysql - 支持 Apps Script Web App 5000 个并发用户

javascript - 具有中心响应的 jquery 动画

javascript - 在 Javascript 中创建一个具有自定义 get/put 操作的关联数组

javascript - javascript 在模糊表单验证方面遇到问题

javascript - 删除动态添加到 ng-repeat(angularjs) 的值

jquery count 选择与所需值匹配的输入

java - 随着应用程序的增长,Struts 2 验证无法正常工作