【发布时间】:2019-09-05 00:01:14
【问题描述】:
正如标题所说,我想获取特定行中的最后一列。我用我的函数lastColumnForRow(sheet, row) 进行了尝试,这与我的函数lastRowForColumn(sheet, column) 非常相似。但是,lastColumnForRow(sheet, row) 中的 getLastColumn() 出现错误,lastRowForColumn(sheet, column) 正在按预期工作。有人知道更好的方法或如何解决这个问题吗?
在我的工作表中,最后一列中有一个值,因此我添加了一个没有值的新列,但这并没有解决问题。我也试过getLastColumn()-1,但同样的问题。
function lastRowForColumn(sheet, column){
// Get the last row with data for the whole sheet.
// Get all data for the given column
// Iterate backwards and find first non empty cell
}
function lastColumnForRow(sheet, row){
// Get the last column with data for the whole sheet.
var numColu = sheet.getLastColumn();
// Get all data for the given row
var data2 = sheet.getRange(row, 1, 1, numColu).getValues();
// Iterate backwards and find first non empty cell
for(var j = data2.length - 1 ; j >= 0 ; j--){
if (data[0][j] != null && data[0][j] != ""){
return j + 1;
}
}
}
function Missionen() {
var gros = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Großaufträge");
var schab = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Schablonen");
var name = gros.getRange(9, 3).getValue();
gros.getRange(12, lastColumnForRow(gros, 12)+1).setValue("Auftrag "+name);
}
我试图在一行中获取最大数量的列,然后向后迭代以找到第一个非空单元格。如果我尝试执行代码,总会出现问题
“目标范围的坐标超出了工作表的尺寸。(第 18 行,文件“代码”)”
基于电话getLastColumn()。
【问题讨论】:
-
numColu不是问题。row是。row的输入值是多少,它是否在工作表的尺寸内?第 18 行是什么? -
@TheMaster 我在函数
Missionen()中使用函数lastColumnForRow(sheet, row)。如您所见,输入是第 12 行(在维度内)。第 18 行是var numColu = sheet.getLastColumn() -
我的猜测是,如果您花时间创建minimal reproducible example,您可能会自己找出问题所在。没有minimal reproducible example,我们很难调试问题。但我一直自愿预测@TheMaster 可能是正确的。
-
第 18 行不是
var numColu = sheet.getLastColumn()。请再次检查。您确定 Row12 存在于gros表中吗?有没有全局变量? -
@TheMaster 在这里你可以看到这一行:imgur.com/a/B2cZwtk 第 12 行存在并且没有全局变量。我将像 Cooper 所说的那样创建一个最小的可重现示例。
标签: google-apps-script google-sheets