改变#VALUE!在谷歌表

时间:2014-12-10 15:47:08

标签: google-apps-script google-sheets

我有一个谷歌工作表和我正在处理的应用程序脚本,但我遇到了一个问题。我在一张纸上有两列,B和C包含各种值。 B将包含单词Middle,而C将是我需要的实际数据。

我在G列中使用了一个公式,它读取了B列和C列中的值,并提取了与“中间”相匹配的相关数据。它将与G中的中间匹配的任何内容放入,并将来自C列的数据放入毗邻H细胞。我用于G列的公式如下所示。

=IF (ISERROR(QUERY('Announcements'!B2:C30;"select * where B contains 'Middle'")), "", QUERY('Announcements'!B2:C30;"select * where B contains 'Middle'"))

然后是包含此内容的H列:

=CONTINUE(G2, 1, 2)

当工作表公式运行时,它会提取正确的数据,但我遇到的问题是,如果没有任何数据要匹配条件(中),则H2单元格会 - ,其中app-script将 #VALUE!投放到运行时填充的Google文档中。

app脚本目前看起来像这样:

var sh10 = sh2.getRange('H2:H20').getValues(); //Middle

我尝试修改我找到的代码

var sheet = ss.getSheetByName("Announcements")
var active = sheet.getActiveCell('H2');
var cell = active.getValue();
if (cell === "#VALUE!"){
active.setValue("");
};

但是当我运行脚本时,我收到错误消息“找不到方法getActiveCell(字符串)。”第64行,文件“测试”

我的最终目标是能够运行工作表和脚本,并且如果没有任何数据要插入到文档的占位符中,只需在该特定占位符中放置一个空格并继续到下一部分。这些是脚本计算与Middle匹配的总数并将数据插入占位符

的部分
var sh21 = sh2.getRange(3,12).getValue(); // Middle
var announcement2 = ""; for (var i = 0; i <= 20 - sh21; i++) { announcement2 += sh10[i]+"\n"; } // Middle

非常感谢任何帮助。

谢谢,

2 个答案:

答案 0 :(得分:0)

我注意到你有一个名为ss的变量,但我没有看到一行代码获得对电子表格的引用:

var ss = SpreadsheetApp.getActiveSpreadsheet();

如果您没有该行,那么依赖ss的下几行代码将无效。

如果您输入Logger.log()语句来检查变量,则可以看到变量的设置:

var ss = SpreadsheetApp.getActiveSpreadsheet();
Logger.log("The value of my ss variable: " + ss);

var sheet = ss.getSheetByName("Announcements")
Logger.log("sheet variable: " + sheet);

然后在代码运行后查看LOG。 我猜这张表可能是空的,这就是导致错误。

我不是说这会回答你的问题,但为了调试问题,我们必须系统地完成一个过程。

答案 1 :(得分:0)

方法.getActiveCell()返回电子表格中活动单元格的任何内容(假设当前选定的单元格)。如果你想要'H2'的值,你需要一个不同的方法:getRange('H2')。getValue()。

Documentation getActiveCell()