Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在google sheets中为脚本获取带有#NA的公式的错误注释_Google Apps Script_Google Sheets_Google Sheets Importxml - Fatal编程技术网

Google apps script 在google sheets中为脚本获取带有#NA的公式的错误注释

Google 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 响应的示例如下所示: {

我找不到任何方法来获取失败公式的错误消息(这实际上提供了比错误代码更多的信息,因为这对于#NA总是7)#NA可能意味着不同的东西,我希望能够识别哪些细胞具有哪种类型的NA

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感谢您的回复和添加信息。我认为你的答案会对用户更有用。