我有一个脚本,它可以按预期执行,但是当前的切片方法粘贴的范围不正确。
当前,该脚本复制第1-12列(A:l)并粘贴第1-5列(A:E),跳过6(F),并按原样粘贴第7-12列(G:l)。
我希望有脚本粘贴列1-5(A:E),跳过6(F),粘贴列7(G),跳过列8(H),并粘贴列9(I)的数据从列9(I),如果“缺席”或从列11的数据,如果“迟到”。
function Copy() {
var sss = SpreadsheetApp.openById("sheet id");
var ss = sss.getSheetByName("Sheet 1");
var lastrow = ss.getLastRow();
var data = ss.getRange(lastrow, 1, 1, 12).getValues();
var tss = SpreadsheetApp.openById("sheet id");
var ts = tss.getSheetByName("Sheet 2"); tab name
var tslastrow = ts.getLastRow();
ts.getRange(tslastrow + 1, 1, 1, 5).setValues([data[0].slice(0,5)]);
ts.getRange(tslastrow + 1, 7, 1, 6).setValues([data[0].slice(6)])
}
发布于 2018-08-07 08:24:14
我理解你想要做什么,如下所示。
如果我的理解是正确的,那么这个修改如何?我认为对于你的情况有几个答案。因此,请将此视为其中之一。
修改后的脚本:
在slice()
检索到元素之后,使用concat()
连接元素。此时,它对列"I“使用了条件。
function Copy() {
var sss = SpreadsheetApp.openById("sheet id");
var ss = sss.getSheetByName("Sheet 1");
var lastrow = ss.getLastRow();
var data = ss.getRange(lastrow, 1, 1, 12).getValues();
var tss = SpreadsheetApp.openById("sheet id");
var ts = tss.getSheetByName("Sheet 2");
var tslastrow = ts.getLastRow();
// Below script was modified.
var r = data[0].slice(0,5).concat(data[0].slice(6,7));
if (data[0][8] == "Absence" || data[0][10] == "late Arrival") {
r = r.concat(data[0][8]);
}
ts.getRange(tslastrow + 1, 1, 1, r.length).setValues([r]);
}
参考文献:
如果我误解了你想要什么,请告诉我。我想修改一下。
https://stackoverflow.com/questions/51713549
复制相似问题