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

时间:2017-11-03 08:32:09

标签: javascript google-apps-script google-sheets

我需要将此范围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"是我知道的身份。 如果有人可以帮助我,请提前感谢您。

1 个答案:

答案 0 :(得分:0)

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

您可以使用copyTo()。但是有一些限制。

通过反映它们,您的脚本可以修改如下。

流程:

  1. 检索作为来源的范围。
  2. 检索作为目的地的范围。
  3. 使用类别表的copyTo()将源表复制到目标表。
  4. 使用Class Range的copyTo()将源范围复制到目标范围。
  5. 删除使用班级copyTo()复制的工作表。
  6. 示例脚本:

    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);
    }
    

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