通过应用程序脚本引用 Google 表格中查询公式的单元格值似乎不起作用
Referencing cell value of a query formula in Google Sheets via apps script does not appear to work
我正在尝试使用 Apps 脚本将一个单元格的值复制到另一个单元格。源单元格的值由查询公式生成:
=sum(iferror(query(ExportDrop!$A:$AJ,"select AJ where A matches '" & join("|",C:C) & "' AND AH = '" & A3 & "'",0),0))
Source sheet 成功并正确显示此查询公式的输出。
在脚本中工作,以下代码生成一个零 (0),这与查看 sheet.
时不同
cellval = sourceSheet.getRange("B3").getValue();
SpreadsheetApp.getUi().alert(cellval); return;
我已尝试使用 setActiveRangeSelection()、copyValuesToRange()、copyTo(,{contentsOnly: true}) 等 getDisplayValue()、getValue()、getValues()(对范围参考进行相应更改)
这是 Google Sheet 的查询函数中的错误吗? 我想知道,因为当我将源打印为 PDF 时,同样的事情发生了 sheet包含查询功能。生成的 PDF 显示零值。所以这似乎不是我的脚本的问题,而更像是源 sheet 的问题。 "simpler" 查询公式的测试 sheet 打印工作正常。
我做错了什么?
编辑:
这是一个例子:https://docs.google.com/spreadsheets/d/1eHHV-TJhC_aVNNLspx3suKhrthtcjRfIcZR0dWdTvOI
尝试打印 Sheet2。第一个 PDF "preview" 看起来不错,但是导出后打开 PDF 时,总和值全为零。
答案:Google 工作表查询功能的宣传功能是 broken/incomplete。
示例:matches
运行 在本地,从不在 google 服务器上导致不同步问题,format
布尔值根本不起作用。
解决方法:使用一系列 OR
代替 matches
=sum(iferror(query(Sheet1!$A:C,"select C where (A = " &join(" OR A = ",filter(C:C,C:C<>"")) & ") AND B = '" & A1 & "'",0),0))
我正在尝试使用 Apps 脚本将一个单元格的值复制到另一个单元格。源单元格的值由查询公式生成:
=sum(iferror(query(ExportDrop!$A:$AJ,"select AJ where A matches '" & join("|",C:C) & "' AND AH = '" & A3 & "'",0),0))
Source sheet 成功并正确显示此查询公式的输出。
在脚本中工作,以下代码生成一个零 (0),这与查看 sheet.
时不同cellval = sourceSheet.getRange("B3").getValue();
SpreadsheetApp.getUi().alert(cellval); return;
我已尝试使用 setActiveRangeSelection()、copyValuesToRange()、copyTo(,{contentsOnly: true}) 等 getDisplayValue()、getValue()、getValues()(对范围参考进行相应更改)
这是 Google Sheet 的查询函数中的错误吗? 我想知道,因为当我将源打印为 PDF 时,同样的事情发生了 sheet包含查询功能。生成的 PDF 显示零值。所以这似乎不是我的脚本的问题,而更像是源 sheet 的问题。 "simpler" 查询公式的测试 sheet 打印工作正常。
我做错了什么?
编辑:
这是一个例子:https://docs.google.com/spreadsheets/d/1eHHV-TJhC_aVNNLspx3suKhrthtcjRfIcZR0dWdTvOI
尝试打印 Sheet2。第一个 PDF "preview" 看起来不错,但是导出后打开 PDF 时,总和值全为零。
答案:Google 工作表查询功能的宣传功能是 broken/incomplete。
示例:matches
运行 在本地,从不在 google 服务器上导致不同步问题,format
布尔值根本不起作用。
解决方法:使用一系列 OR
代替 matches
=sum(iferror(query(Sheet1!$A:C,"select C where (A = " &join(" OR A = ",filter(C:C,C:C<>"")) & ") AND B = '" & A1 & "'",0),0))