使用Google Apps脚本将值和格式复制到另一个Google电子表格

时间:2012-09-14 17:49:35

标签: google-apps-script google-sheets google-spreadsheet-api

我有一张表格可以从XML Feed中提取数据。我编写了一个脚本,然后根据特定列的内容将一张表分成几张其他表。一切正常。

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

我目前使用的代码是:

var datarange = template_sheet.getDataRange();

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

}

有没有办法做我正在寻找的东西?或者我是否需要先将原始数据拆分为单独的工作表,然后遍历每个工作表并执行格式化/公式?

2 个答案:

答案 0 :(得分:3)

您应该使用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));
}

答案 1 :(得分: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

}