我有一个可以按预期执行的脚本,但是当前的切片方法粘贴了错误的范围。
当前,脚本将按原样复制1-12(A:L)列并粘贴1-5(A:E)列,跳过6(F),并粘贴7-12(G:L)列。 / p>
我希望脚本将数据粘贴到第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)])
}
答案 0 :(得分:0)
我了解您要执行的操作。
如果我的理解是正确的,那么该修改如何?我认为您的情况有几个答案。因此,请将此视为其中之一。
由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]);
}
如果我误解了您想要什么,请告诉我。我想修改它。