我正在尝试使用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 Sheet查询功能中的错误吗?我想知道,因为当我将包含查询功能的源工作表打印为PDF时会发生相同的情况。生成的PDF显示零值。因此,这似乎不是我的脚本的问题,而更像是源表的问题。测试“简单”查询公式表的工作正常。
我在做什么错?
编辑:
这里是一个例子:https://docs.google.com/spreadsheets/d/1eHHV-TJhC_aVNNLspx3suKhrthtcjRfIcZR0dWdTvOI
尝试打印Sheet2。第一个PDF“预览”看起来不错,但是在导出后打开PDF时,总和值为全零。
答案: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))