需要将另一张工作表中的格式和值复制到下一个空白行



我需要将这个范围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"是我知道的id。如果有人能帮我的话,提前谢谢你。

这次修改怎么样?请将此视为几个答案之一。

您可以使用copyTo()。但也有一些局限性。

类范围的copyTo()可以将格式和值复制到同一电子表格中的工作表和范围中
  • 类别范围的copyTo()无法将数据复制到其他电子表格中的范围和工作表中
  • ClassSheet的copyTo()可以将一张表复制到其他电子表格中
  • 类别表的copyTo()无法复制范围
  • 通过反映它们,可以按如下方式修改脚本。

    流量:

    1. 检索作为源的范围
    2. 检索作为目标的范围
    3. 使用类别工作表的copyTo()将源工作表复制到目标工作表
    4. 使用类范围的copyTo()将源范围复制到目标范围
    5. 删除使用类别工作表的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);
    }
    

    如果我误解了你的问题,我很抱歉。

    最新更新