我需要将此范围A1:BU17复制到下一行可用的同一电子表格中的另一个工作表。 我试着用这个:
function Copy() {
var sss = SpreadsheetApp.openById('x'); //replace with source ID
var ss = sss.getSheetByName('Analysing'); //replace with source Sheet tab name
var range = ss.getRange('A1:BU17'); //assign the range you want to copy
var data = range.getValues();
var tss = SpreadsheetApp.openById('x'); //replace with destination ID
var ts = tss.getSheetByName('Archive'); //replace with destination Sheet tab name
ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);
}
我在stackoverflow中找到了这个搜索。它确实将我的行复制到下一个可用的但不是格式,所以当我使用它时总是一团糟。 Ofc" X"是我知道的身份。 如果有人可以帮助我,请提前感谢您。
答案 0 :(得分:0)
这次修改怎么样?请将此视为几个答案之一。
您可以使用copyTo()
。但是有一些限制。
copyTo()
of Class Range可以将格式和值复制到同一电子表格中的工作表和范围。copyTo()
of Class Range无法将数据复制到范围和其他电子表格中的工作表。copyTo()
of Class Sheet可以将工作表复制到其他电子表格。copyTo()
of Class Sheet无法复制范围。通过反映它们,您的脚本可以修改如下。
copyTo()
将源表复制到目标表。copyTo()
将源范围复制到目标范围。copyTo()
复制的工作表。function Copy() {
var sss = SpreadsheetApp.openById('x'); //replace with source ID
var ss = sss.getSheetByName('Analysing'); //replace with source Sheet tab name
var srcrange = ss.getRange('A1:BU17'); //assign the range you want to copy
var tss = SpreadsheetApp.openById('x'); //replace with destination ID
var ts = tss.getSheetByName('Archive'); //replace with destination Sheet tab name
var dstrange = ts.getRange(ts.getLastRow()+1, 1, srcrange.getHeight(), srcrange.getWidth());
var dstSS = dstrange.getSheet().getParent();
var copiedsheet = srcrange.getSheet().copyTo(dstSS);
copiedsheet.getRange(srcrange.getA1Notation()).copyTo(dstrange);
dstSS.deleteSheet(copiedsheet);
}
如果我误解了你的问题,我很抱歉。