Google apps script 在google sheets中为脚本获取带有#NA的公式的错误注释
我找不到任何方法来获取失败公式的错误消息(这实际上提供了比错误代码更多的信息,因为这对于#NA总是7)#NA可能意味着不同的东西,我希望能够识别哪些细胞具有哪种类型的NAGoogle apps script 在google sheets中为脚本获取带有#NA的公式的错误注释,google-apps-script,google-sheets,google-sheets-importxml,Google Apps Script,Google Sheets,Google Sheets Importxml,我找不到任何方法来获取失败公式的错误消息(这实际上提供了比错误代码更多的信息,因为这对于#NA总是7)#NA可能意味着不同的东西,我希望能够识别哪些细胞具有哪种类型的NA getNote不起作用 有办法吗 Im使用IMPORTXML(C1:C,“/@value”) 但例如,当我vlookup失败时,这是我想要检索的错误消息 更新2021-02-01: 同样,可以通过API在工作表中检索错误消息。此信息可以作为的一部分找到,它对应于的属性effectiveValue 响应的示例如下所示: {
getNote
不起作用
有办法吗
Im使用IMPORTXML(C1:C,“/@value”)
但例如,当我vlookup失败时,这是我想要检索的错误消息
更新2021-02-01:
同样,可以通过API在工作表中检索错误消息。此信息可以作为的一部分找到,它对应于的属性effectiveValue
响应的示例如下所示:
{
"sheets": [
{
"data": [
{
"rowData": [
{
"values": [
{
"effectiveValue": {
"errorValue": {
"type": "DIVIDE_BY_ZERO",
"message": "Function DIVIDE parameter 2 cannot be zero."
}
}
}
]
}
]
}
]
}
]
}
然后,您可以使用通过应用程序脚本访问此API。例如,如果要检索单元格A1
的错误消息,可以执行以下操作:
function getErrorMessage(cellNotation = "A1") {
const optionalArgs = {
fields: "sheets(data(rowData(values(effectiveValue))))",
ranges: cellNotation
}
const spreadsheetId = SpreadsheetApp.getActive().getId();
const response = Sheets.Spreadsheets.get(spreadsheetId, optionalArgs);
const errorMessage = response.sheets[0].data[0].rowData[0].values[0].effectiveValue.errorValue.message;
return errorMessage;
}
不幸的是,这不能用作自定义函数,因为它需要用户授权(请参阅)
原始答复:
据我所知,没有内置函数、应用程序脚本工具和API方法可以检索这些信息
如果您认为拥有这个功能将非常有用,您可以考虑在.
中创建一个特性请求。 作为一种变通方法,您可以为正在使用的每个内置函数创建一个自定义函数,并使用它来检索您得到的任何异常我希望这能有所帮助。也许还有其他方法可以识别不同的NA错误?您将传递什么到
getNote()
?如中所示,()
?@Dan getNote()是一个类范围的方法,它不使用任何参数。您能否提供公式中引用的任何单元格的内容,以便复制?非常感谢您的回答。我不是很有经验,但这将意味着包括从脚本中的单元格公式,然后捕捉错误,如果有一个。。。。但这是否适用于可以更改状态的公式(如importxml),加载它需要几秒钟到几分钟的时间?他还能工作吗?这个想法实际上更多的是检查一个单元格的状态,这个单元格已经有了一个公式。。。。当我使用importxml进行api调用时,不同的单元格可能已成功加载,而其他单元格有不同类型的错误,没有足够的积分,api未返回任何结果。@reraisebob您不能在脚本中使用内置公式。我建议编写一个脚本函数,该函数将模拟您想要使用的内置函数的行为,并处理您可能遇到的异常。当我创建一个示例脚本时,我注意到公式的错误消息可以使用spreadsheets.get in Sheets API的方法检索。尽管不幸的是,在现阶段,这仍然不能仅通过内置功能实现,但我认为,当这些信息添加到您的答案中时,可能对其他用户有用。@Tanaike感谢您的评论,它提供了非常有价值的信息。当我最初发布这个答案时,我完全错过了API中的功能。我更新了我的答案,以使其更具可视性。如果您认为这可以改进,请随意编辑此答案或发布新答案。@Iamblichus感谢您的回复和添加信息。我认为你的答案会对用户更有用。