【问题标题】:Referencing cell value of a query formula in Google Sheets via apps script does not appear to work通过应用程序脚本在 Google 表格中引用查询公式的单元格值似乎不起作用
【发布时间】:2020-04-06 01:31:59
【问题描述】:

我正在尝试使用 Apps 脚本将一个单元格的值复制到另一个单元格。源单元格的值由查询公式生成:

=sum(iferror(query(ExportDrop!$A$2:$AJ,"select AJ where A matches '" & join("|",C$3:C) & "' AND AH = '" & A3 & "'",0),0))

源表成功且正确地显示此查询公式的输出。

在脚本中工作时,以下代码生成零 (0),这与查看工作表时不同。

cellval = sourceSheet.getRange("B3").getValue();
SpreadsheetApp.getUi().alert(cellval); return;

我尝试使用 setActiveRangeSelection()、copyValuesToRange()、copyTo(,{contentsOnly: true}) 等 getDisplayValue()、getValue()、getValues()(对范围参考进行相应更改)。

这是 Google 表格查询功能中的错误吗?我想知道,因为当我将包含查询功能的源表格打印为 PDF 时,也会发生同样的事情。生成的 PDF 显示零值。所以这似乎不是我的脚本的问题,而更像是源表的问题。打印“更简单”的查询公式表的测试工作正常。

我做错了什么?

编辑:

这里是一个例子:https://docs.google.com/spreadsheets/d/1eHHV-TJhC_aVNNLspx3suKhrthtcjRfIcZR0dWdTvOI

尝试打印 Sheet2。第一个 PDF“预览”看起来不错,但在导出后打开 PDF 时,总和值全为零。

【问题讨论】:

  • 需要样品表链接来演示。
  • @CodeCamper 抱歉,应该将其包含在 OP 中。我已经对其进行了编辑以包括在内。
  • 情况变得奇怪了。使用新的 Brave Browser 窗口,工作表最初按照您的建议显示为零。通过 Chrome 触摸 B 列中的公式后,我的 Brave 窗口显示了正确的值。打开新的 Brave 浏览器会再次导致零值。所以它看起来像一个错误,但与我的问题无关。看起来浏览器在第一次加载工作表时呈现零,但如果在浏览器打开时更新工作表,它会显示正确的值。
  • @TheMaster 看来matches 根本没有在服务器上运行,只是在本地有点像format 布尔功能只是谷歌的虚假广告。可悲的是,一个简单的网络浏览器刷新就证明了这种不同步故障。
  • @TheMaster 我试过flush它仍然显示零即使它是10在你的脸上,matches根本没有进入服务器,刷新让一切恢复零。

标签: google-apps-script google-sheets printing google-sheets-query


【解决方案1】:

回答:Google 表格查询功能宣传的功能已损坏/不完整。

示例:matches 在本地运行,永远不会在 google 服务器上运行导致不同步问题,format 布尔值根本不起作用。

解决方法:使用一系列 OR 代替 matches

=sum(iferror(query(Sheet1!$A$2:C,"select C where (A = " &join(" OR A = ",filter(C$1:C,C$1:C<>"")) & ") AND B = '" & A1 & "'",0),0))

【讨论】:

  • 唉。您是否知道“匹配”的替代方法来产生“在哪里”类型的查询?我想我可能需要构建一系列 OR。
  • @NatWest 显然这是大多数人所做的,我使用了大量的 Query 并且从来没有遇到过这类问题,可能是因为我确保从不使用 matches
  • @NatWest 考虑在issuetracker中创建问题
猜你喜欢
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
相关资源
最近更新 更多