如何在谷歌工作表中使用数组公式时使用getLastRow.我可以让它忽略一列吗
How to use getLastRow when using an array formula, in google sheets. Can I have it ignore a column?
我在谷歌工作表中使用以下公式。它工作得很好,只是我发现getLastRow不起作用,因为我在M-P列中使用数组公式。
我该怎么绕过这个?是否可以让getLastRow忽略这些列?
链接到测试表。
function onEdit(event) {
// assumes source data in sheet named Needed
// target sheet of move to named Acquired
// test column with yes/no is col 4 or D
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Open" && r.getColumn() == 9 && r.getValue() == "Yes") {
var row = r.getRow();
var numColumns = s.getLastColumn()-2;
var targetSheet = ss.getSheetByName("Closed");
var target = targetSheet.getRange(targetSheet.getLastRow()+1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
s.insertRowAfter(29);
var cell = s.getRange("H30");
cell.setFormula("=IF(LEN(C30),MINUS(G30,TODAY()),)");
}
}
从链接到测试表,关闭!M1是
={"Audit - Resp. Days Left";ARRAYFORMULA(IF(LEN(F2:F),MINUS(F2:F,I2:I),))}
上面的公式返回一个与Closed工作表高度相同的数组,这使得getLastRow返回的值与maxRows相同。
为了保持公式和脚本不变,一种选择是删除"关闭"工作表中的空白行。
另一种选择是将M1中的闭表公式更改为P1,以仅返回所需的行。一种方法是使用FILTER函数,而不是ARRAYFORMULA和IF函数,即,对于M1
={"Audit - Resp. Days Left";FILTER(MINUS(E2:E,H2:H),LEN(E2:E))}
要做到这一点,一定要清除空白行的内容。
或者,您可以创建一个助手函数来检查作为参数传入的列中的最后一行。
function getLastRowInColumn(sheetObj, range) {
return sheetObj.getRange(range)
.getValues().filter (String).length
}
您可以在脚本中调用此函数(请参见"var-lr"行)
function onEdit(event) {
var s = event.source.getActiveSheet();
if(s.getName() == "Open" && event.range.columnStart == 9 && event.value == "Yes") {
var targetSheet = event.source.getSheetByName("Closed");
var lr = getLastRowInColumn(targetSheet, 'C:C')
var target = targetSheet.getRange(lr+1, 1);
s.getRange(event.range.rowStart, 1, 1, s.getLastColumn()-2).moveTo(target);
s.deleteRow(event.range.rowStart);
s.insertRowAfter(29);
var cell = s.getRange("H30");
cell.setFormula("=IF(LEN(C30),MINUS(G30,TODAY()),)");
}
}
相关文章:
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 我可以使用JS一次使用JSON数组中的一个字符串吗
- 有没有一种方法可以让我得到window.onresize只刷新页面的宽度大小
- 有没有一种方法可以生成Braintree令牌,而不必向我的服务器添加PHP脚本
- 我的砖石图像只显示在一列中
- 有没有一条清晰的路径,我可以实现一个在 ScalaJS + React 中广泛使用上下文的 React 组件
- 有没有一种方法可以通过列类型/属性来格式化MySQL单元格数据
- 有没有一种方法可以捕获JavaScript控制台输出,以便我可以在其他地方引用它
- 在剑道网格中,我可以用一个函数动态设置列属性吗
- JQuery定位:我可以滚动到正确的位置一次,但不能滚动两次
- 我可以用jQuery画一条线吗
- 有没有一种方法可以在IE8中解决我的Rails javascript应用程序.js的问题
- 有没有一种方法可以将我的JS函数排队到JSF事件队列中
- 有没有一种方法可以使用gull来修改我的index.thml,以防止CSS缓存
- 我可以更改当点击剑道网格下一页按钮时触发的事件吗
- 我可以用JavaScript声明一个数组中的两个变量吗
- 我可以用javascript进一步破坏一个数组吗
- 我可以'我找不到一种将数据库源添加到dgrid的优雅方法
- 如何在谷歌工作表中使用数组公式时使用getLastRow.我可以让它忽略一列吗
- 如何在textField上使用zIndex,这样当我在Titanium中按下一步时,我可以移动到其他textField