我一直在做一个个人项目,遇到了一个问题,即当存在隐藏数据(例如复选框)时,我无法弄清楚如何获取特定表的最后一行。' 我一直在研究这个主题并遇到了一个可能的解决方案,但我不确定如何将它融入我的代码中,或者我是否可以将它整合到我的代码中,因为坦率地说,我对编码语言还不是很流利。
以下代码归功于原作者 ( https://yagisanatode.com/ ):
function getLastRowSpecial(range){
var rowNum = 0;
var blank = false;
for(var row = 0; row < range.length; row++){
if(range[row][0] === "" && !blank){
rowNum = row;
blank = true;
}
else if (range[row][0] !== ""){
blank = false;
};
};
return rowNum;
};
这是我当前的代码:
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var currentSh = event.source.getActiveSheet();
var currentCell = event.source.getActiveRange();
if (currentSh.getName() == 'invoice_approval' && currentCell.getColumn() == 5 && currentCell.getValue()== 'Approved') {
var row = currentCell.getRow();
var numColumns = currentSh.getLastColumn();
var targetSh = ss.getSheetByName('open_invoices');
var target = targetSh.getRange(targetSh.getLastRow()+1, 1);
currentSh.getRange(row,1,1,numColumns).moveTo(target);
currentSh.deleteRow(row);
}
// (Moving back rows <open_invoices to invoice_approval> when a cell's value is changed from 'Approved')
else if (currentSh.getName() == 'open_invoices' && currentCell.getColumn() == 5 && currentCell.getValue()!= 'Approved' ) {
var row = currentCell.getRow();
var targetSh = ss.getSheetByName('invoice_approval');
var target = targetSh.getRange(targetSh.getLastRow()+1, 1);
currentSh.getRange(row,1,1,5).moveTo(target);
currentSh.deleteRow(row);
}
}
我制作了一个样本表并列出了我面临的问题:
https://docs.google.com/spreadsheets/d/1Yol5FAa3Sw84zRDanOCILUhD1IWMKjrHAJewT-P18to/edit?usp=sharing