我已经有了这个脚本,但我只是想知道是否有人可以解释如何提高效率。现在我只是重复代码,这显然不是正确的方法。
基本上我只是想将某些列从一张纸复制到另一张。问题是我不想要源表中的所有列,并且它们在目标表上也不是相同的顺序。例如:源表上的列A位于目标表单上的列D中
function copy() {
var sss = SpreadsheetApp.openById('myID');
var ss = sss.getSheetByName('Inventory');
var range1 = ss.getRange('A2:A');
var data1 = range1.getValues();
var range2 = ss.getRange('D2:D');
var data2 = range2.getValues();
var range3 = ss.getRange('F2:F');
var data3 = range3.getValues();
var tss = SpreadsheetApp.openById('myID');
var ts = tss.getSheetByName('Inventory Report');
ts.getRange(2, 4, data1.length, data1[0].length).setValues(data1);
ts.getRange(2, 2, data2.length, data2[0].length).setValues(data2);
ts.getRange(2, 1, data3.length, data3[0].length).setValues(data3);
}
答案 0 :(得分:0)
这次修改怎么样?请将此视为几个答案之一。
getDataRange()
从源表中检索所有数据。filter()
和map()
。e[5]
,e[3]
和e[0]]
分别对应F2:F
,D2:D
和A2:A
。[e[5], e[3], "", e[0]]
分别对应getRange(2, 1,
,getRange(2, 2,
和getRange(2, 4,
。没有getRange(2, 3,
。所以我使用了""
。function copy() {
var sss = SpreadsheetApp.openById('myID');
var ss = sss.getSheetByName('Inventory');
var data = ss.getDataRange().getValues();
var d = data.filter(function(e, i){return i > 0 && e}).map(function(e){return [e[5], e[3], "", e[0]]});
var tss = SpreadsheetApp.openById('myID');
var ts = tss.getSheetByName('Inventory Report');
ts.getRange(2, 1, d.length, d[0].length).setValues(d);
}
如果我的理解错了,我很抱歉。