【问题标题】:Google App Script Ignore Data Validation ErrorGoogle App 脚本忽略数据验证错误
【发布时间】:2019-02-01 13:58:27
【问题描述】:

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

我正在寻找一种方法来忽略数据验证规则并插入数据而不更改已设置的数据验证规则。我只想忽略 App Script Error。

您在 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");

【问题讨论】:

  • 由于这需要具有数据验证功能的 Google 表格,我无法创建 MCVE,我发布的代码是测试此功能所需代码的 100%。您只需要创建一个带有数据验证的工作表并确保 row_data[x][y] 违反该规则。
  • @ScottPaterson,你能解决这个问题吗?

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 我很确定仍然无法插入数据。无论数据验证如何,我都想插入数据。还更新了我的问题,因为错误表现得很奇怪,
猜你喜欢
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-17
  • 2011-06-07
  • 2021-05-15
相关资源
最近更新 更多