将值复制到空行
Copy valuem to EmptyRow
我有这个代码:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("WREQ");
var pasteSheet = ss.getSheetByName("Orders/Deliveries");
// get source range
var source = copySheet.getRange("A2:X");;
// get destination range
var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1, 3, 1, 1);
// copy values to destination range
source.copyTo(destination);
copySheet.deleteRows(2, source.getNumRows())
}
它从WREQ
sheet复制A2:X中的信息并粘贴到Orders/Deliveries
sheet的最后一行+1从c列开始.问题是,在 pasteSheet.getRange(pasteSheet.getLastRow()+1, 3, 1, 1);
上,它确实抓住了最后一个空行,并且由于我在 Orders/Deliveries A、B 列(用于控制)上有公式和复选框,它使脚本能够理解行不为空,然后去下一个,通常会往下走。
我希望它忽略 A、B 列,因为它们是控制列,并检查是否是从 C 列开始的最后一行,如果 C 为空则粘贴数据并继续执行脚本的其余部分。
不确定如何在此代码中加入,因为我的编码能力很差。我在考虑 isBlank,但不确定如何让它按照我想要的方式工作。
- 如果数据(C 列)没有间隙,您可以尝试
var lastRow = pasteSheet.getRange("C:C").getValues().filter(String).length;
然后在下一行使用这个变量
var destination = pasteSheet.getRange(lastRow + 1, 3, 1, 1);
- 如果数据范围内有间隙(空单元格),您可以创建一个辅助函数来计算列中的第一个空闲行(传递给函数的第二个参数)。
function findFirstFreeRow(sheet, colNum) {
var v = sheet.getRange(1, colNum, sheet.getLastRow()).getValues(),
l = v.length,
r;
while (l > 0) {
if (v[l] && v[l][0].toString().length > 0) {
r = (l + 2);
break;
} else {
l--;
}
}
return r;
}
然后调用此函数获取第一个空闲行
var destination = pasteSheet.getRange(findFirstFreeRow(pasteSheet, 3), 3, 1, 1);
我有这个代码:
function copyInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var copySheet = ss.getSheetByName("WREQ");
var pasteSheet = ss.getSheetByName("Orders/Deliveries");
// get source range
var source = copySheet.getRange("A2:X");;
// get destination range
var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1, 3, 1, 1);
// copy values to destination range
source.copyTo(destination);
copySheet.deleteRows(2, source.getNumRows())
}
它从WREQ
sheet复制A2:X中的信息并粘贴到Orders/Deliveries
sheet的最后一行+1从c列开始.问题是,在 pasteSheet.getRange(pasteSheet.getLastRow()+1, 3, 1, 1);
上,它确实抓住了最后一个空行,并且由于我在 Orders/Deliveries A、B 列(用于控制)上有公式和复选框,它使脚本能够理解行不为空,然后去下一个,通常会往下走。
我希望它忽略 A、B 列,因为它们是控制列,并检查是否是从 C 列开始的最后一行,如果 C 为空则粘贴数据并继续执行脚本的其余部分。
不确定如何在此代码中加入,因为我的编码能力很差。我在考虑 isBlank,但不确定如何让它按照我想要的方式工作。
- 如果数据(C 列)没有间隙,您可以尝试
var lastRow = pasteSheet.getRange("C:C").getValues().filter(String).length;
然后在下一行使用这个变量
var destination = pasteSheet.getRange(lastRow + 1, 3, 1, 1);
- 如果数据范围内有间隙(空单元格),您可以创建一个辅助函数来计算列中的第一个空闲行(传递给函数的第二个参数)。
function findFirstFreeRow(sheet, colNum) {
var v = sheet.getRange(1, colNum, sheet.getLastRow()).getValues(),
l = v.length,
r;
while (l > 0) {
if (v[l] && v[l][0].toString().length > 0) {
r = (l + 2);
break;
} else {
l--;
}
}
return r;
}
然后调用此函数获取第一个空闲行
var destination = pasteSheet.getRange(findFirstFreeRow(pasteSheet, 3), 3, 1, 1);