我有一个谷歌工作表和我正在处理的应用程序脚本,但我遇到了一个问题。我在一张纸上有两列,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
非常感谢任何帮助。
谢谢,
保
答案 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()。