我有一张表格可以从XML Feed中提取数据。我编写了一个脚本,然后根据特定列的内容将一张表分成几张其他表。一切正常。
我的问题是,在我从XML中提取数据之后,在将其拆分为新工作表之前,我添加了一些列,进行了一些格式化等等。然后当我将一行(使用appendRow())复制到新表,我失去了格式和公式。
我目前使用的代码是:
var datarange = template_sheet.getDataRange();
for (var i in dataRange) {
workbook.getSheetByName(dataRange[i][6]).appendRow(dataRange[i]);
}
有没有办法做我正在寻找的东西?或者我是否需要先将原始数据拆分为单独的工作表,然后遍历每个工作表并执行格式化/公式?
答案 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
}