Google表格脚本.getValue()和.getDisplayValue()返回#REF有些原因

时间:2016-10-06 13:55:28

标签: google-apps-script google-sheets

之前我有这个功能,但由于某种原因它不再工作了。 This is a picture of the three pieces of data I am trying to collect.他们在我的文件中引用了其他几张,包括一些“间接”。以下是我试图运行的简单代码,以获取其中一个数据的值:

var ss = SpreadsheetApp.openById(logKey).getSheetByName("Investing");
var value = ss.getRange("G2").getValue();
var formula = ss.getRange("G2").getFormula();
Logger.log("Value: " + value + "  Formula: " + formula);

......这是输出:

  

[16-10-06 09:50:04:531 EDT]价值:#REF!公式:= AD $ 2

从输出中可以看出,它成功地从电子表格中读取了单元格,但它没有从单元格中获取值,只是公式。我不明白为什么会出现这种情况,因为在我的工作表中,它试图获得的价值是' #REF!'。

正如我之前所说,我之前使用过这段通用代码,但我必须改变一些东西,以致它破坏了我试图做的事情。

补充说明:我不确定这段代码是否因某些原因而成为罪魁祸首,即使它之前的工作方式如此。这只是将列号转换为另一张表格中的行号,以便于复制和粘贴:

=INDEX(
  INDIRECT(
    CONCATENATE("QUOTES!",
      REGEXEXTRACT(ADDRESS(ROW(), ((ROW()-3)*5)+4), "[A-Z]+"),
      "4:", 
      REGEXEXTRACT(ADDRESS(ROW(), ((ROW()-3)*5)+4), "[A-Z]+")
    )
  ), 
  COUNT(
    INDIRECT(
      CONCATENATE("QUOTES!",
        REGEXEXTRACT(ADDRESS(ROW(), ((ROW()-3)*5)+4), "[A-Z]+"),
        "4:", 
        REGEXEXTRACT(ADDRESS(ROW(), ((ROW()-3)*5)+4), "[A-Z]+")
      )
    )
  )
)

1 个答案:

答案 0 :(得分:0)

简短回答

避免#REF!错误,公式不应放在第二行。它可以放在第3行和第3行。

解释

第2行的任何单元格上的

ADDRESS(ROW(), ((ROW()-3)*5)+4)都会返回以下错误消息:

  

函数ADDRESS参数2的值为-1。有效值介于1和18278之间。