1

我有一张从 XML 提要中提取数据的工作表。我编写了一个脚本,然后根据特定列的内容将该一张纸分解​​为其他几张纸。这一切都很好。

我的问题是,在我从 XML 中提取数据并将其拆分为新工作表之前,我添加了一些列,进行了一些格式化等。然后当我将一行(使用 appendRow())复制到新工作表时,我丢失了格式和公式。

我目前使用的代码是:

var datarange = template_sheet.getDataRange();

for (var i in dataRange) {
   workbook.getSheetByName(dataRange[i][6]).appendRow(dataRange[i]);

}

有没有办法做我正在寻找的东西?还是我需要先将原始数据分解成单独的表格,然后遍历每张表格并进行格式化/公式?

4

2 回答 2

4

您应该使用 Range 对象的方法copyTo(range, optAdvancedArgs)

var datarange = template_sheet.getDataRange();
for (var i in datarange)
  datarange[i].copyTo(
    workbook.getSheetByName(dataRange[i][6]).getRange(
      workbook.getSheetByName(dataRange[i][6]).getMaxRows()+1, 1));

应该做的伎俩

更清晰:

var datarange = template_sheet.getDataRange();
for (var i in datarange) {
  var sheet = workbook.getSheetByName(dataRange[i][6].getValue());
  datarange[i].copyTo(sheet.getRange(sheet.getMaxRows()+1, 1));
}
于 2012-09-14T19:53:55.950 回答
1

将包含值和格式的选项卡从一个选项卡复制到新选项卡:

function copyTab() {
  var ss, sourceSheet, sourceData, sourceDataRange, newSheetTab;

  ss = SpreadsheetApp.getActiveSpreadsheet();//Get active spreadsheet

  sourceSheet = ss.getSheetByName("Sheet1");//Get the source sheet tab
  newSheetTab = ss.insertSheet("New Sheet");//Create a new sheet tab

  sourceDataRange = sourceSheet.getDataRange();

  sourceDataRange.copyTo(newSheetTab.getRange(1, 1));//Copies the data from a range of 
  //cells to another range of cells. By default both the values and formatting are copied

}
于 2017-09-21T00:20:34.780 回答