0

我有一个附有一些脚本的谷歌表。有一个 onOpen() 函数可以在 UI 中创建一个菜单,该菜单是可以排序的列列表。通过选择菜单项调用的各个排序功能是以下脚本的变体(对不同的列进行排序)。

问题:在工作表上,函数返回“#ERROR!” 当单击包含函数的单元格时,只需按 Enter 键,该单元格就会神奇地自行修复并完全按照应有的方式显示正确的范围。

我不知道是公式有问题,还是脚本有问题。目前关于可能是什么问题的想法是:与公式引用另一张纸这一事实有关。关于从哪里开始或为什么会出现初始错误(在重新计算单元后显然不会保留)的任何想法?

function sortJoindate() {
var sortvar = "Join Date";
var sheet = SpreadsheetApp.getActiveSheet();
var currentSort = sheet.getRange("A2").getValue();
var pmdata = sheet.getRange("A3");

if (currentSort == "SORTED BY " + sortvar + " ASC") {

sheet.getRange("A2").setValue("SORTED BY Join Date DESC");
pmdata.setValue("=QUERY(MemberData!A:J,\"select A,D,E,F,C,H,B where J = '\" & A1 & \"' order by A DESC \"");

} else {

sheet.getRange("A2").setValue("SORTED BY " + sortvar + " ASC");
pmdata.setValue("=QUERY(MemberData!A:J,\"select A,D,E,F,C,H,B where J = '\" & A1 & \"' order by A ASC \"");

}
SpreadsheetApp.flush();
}

运行脚本后,在单元格上按 enter 运行脚本后,在单元格上按 enter 之后

4

1 回答 1

0

发现了问题,当我按下回车键时,谷歌表格的所有智慧和帮助都在纠正我的解析错误,而且我没有仔细研究我输入的内容和纠正的内容之间的差异。我忘了最后一个括号。

不正确:

pmdata.setValue("=QUERY(MemberData!A:J,\"select A,D,E,F,C,H,B where J = '\" & A1 & \"' order by A DESC \"");

正确的:

pmdata.setValue("=QUERY(MemberData!A:J,\"select A,D,E,F,C,H,B where J = '\" & A1 & \"' order by A DESC \")");

区别在于最后的括号 4 个字符......很高兴我最终找到了它。检查你的括号ppl。

于 2017-05-09T06:43:33.287 回答