Google apps script Google应用程序脚本-getLastRow,其中某些列为空
我有下面的GoogleApps脚本,它从源工作表复制数据并粘贴到另一个工作表中。它当前查找目标工作表的最后一个空行和最后一个空列。现在,我在目标工作表中有一些列填充了公式来处理粘贴的数据。目标工作表列范围是A:K,并且在列I:K中有公式。在中,有人可以帮助我使用新代码查找列A:H为空的最后一行吗Google apps script Google应用程序脚本-getLastRow,其中某些列为空,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有下面的GoogleApps脚本,它从源工作表复制数据并粘贴到另一个工作表中。它当前查找目标工作表的最后一个空行和最后一个空列。现在,我在目标工作表中有一些列填充了公式来处理粘贴的数据。目标工作表列范围是A:K,并且在列I:K中有公式。在中,有人可以帮助我使用新代码查找列A:H为空的最后一行吗 函数onEdit(e){ var电子表格=e.source; var sheet=spreadsheet.getActiveSheet(); var sourcesheetname=“SOP寄存器”
函数onEdit(e){
var电子表格=e.source;
var sheet=spreadsheet.getActiveSheet();
var sourcesheetname=“SOP寄存器”
var范围=e范围;
var sheet=range.getSheet();
var row=range.getRow();
var column=range.getColumn();
var editedColumn=range.getColumn();
var editedRow=range.getRow();
var列=7;
var date=range.getValue();
if(Object.prototype.toString.call(date)=='[Object date]'&&editedColumn==column&&editedRow>2&&sheet.getName()==sourcesheetname){
var targetsheetname=“内部审计登记簿”;
var target=e.source.getSheetByName(targetsheetname);
var numCols=sheet.getLastColumn();
var values=sheet.getRange(行,1,1,numCols).getValues()[0];
值。拼接(9)//直到并包括列I
值。拼接(7,1)//删除列H
value.splice(2,3);//保留所有列,并省略C、D和E列
var lastRow=target.getLastRow();
var lastCol=target.getLastColumn();
values.unshift(“SOP”);//将“SOP”追加到A列
target.appendRow(值);//追加新行
sheet.hideColumns(6,2);}}//onEdit函数的结尾
我相信您的目标如下
- 您有一张表,其值在“a”到“K”列中。列“I”到“K”有公式
- 您希望检索“A:H”范围内最后一行的编号
lastRow
的值
function getLastRow(sheet) {
const values = sheet.getRange("A1:H" + sheet.getLastRow()).getDisplayValues();
let lastRow = 0;
for (let r = values.length - 1; r >= 0 ; r--) {
if (!lastRow && !values[r].every(e => e == "")) {
lastRow = r + 1;
break
}
}
return lastRow;
}
为了在脚本中使用上述函数,请修改如下
发件人:
致:
- 这样,可以在“A:H”范围内检索到
lastRow
getLastRow(target)
检索的lastRow
不被使用,values
被appendRow
追加到工作表的最后一行。因此,为了使用lastRow
,请修改如下。在这种情况下,请根据更新的问题,将getRange(“A1:H”+sheet.getLastRow())
修改为getRange(“A1:F”+sheet.getLastRow())
,以实现getLastRow
的功能
发件人:
致:
增加2:
getLastRow()
发件人:
致:
- 在这种情况下,至少要求第3行在列“I”到“K”处有公式
- 如果第3行的“I”到“K”列中肯定有公式,我认为您也可以使用
If(lastRow>=3)target.getRange(3,9,1,3)、copyTo(target.getRange(lastRow+1,9,1,3)、SpreadsheetApp.copypestype.PASTE_公式)代码>
var lastRow = target.getLastRow();
var lastRow = getLastRow(target);
var lastRow = getLastRow(target);
var lastCol = target.getLastColumn();
values.unshift("SOP"); //Append "SOP" to column A
target.appendRow(values); // Append new row
var lastRow = getLastRow(target);
var lastCol = target.getLastColumn();
values.unshift("SOP");
target.getRange(lastRow + 1, 1, 1, values.length).setValues([values]); // Modified
var lastRow = getLastRow(target);
var lastCol = target.getLastColumn();
values.unshift("SOP"); //Append "SOP" to column A
target.appendRow(values); // Append new row
var lastRow = getLastRow(target);
var lastCol = target.getLastColumn();
values.unshift("SOP");
target.getRange(lastRow + 1, 1, 1, values.length).setValues([values]); // Modified
if (lastRow >= 3) target.getRange(lastRow, 9, 1, 3).copyTo(target.getRange(lastRow + 1, 9, 1, 3), SpreadsheetApp.CopyPasteType.PASTE_FORMULA); // Added