作为一个警告,我是很新的谷歌应用程序的脚本。 我明白,可提供任何援助。
我想一个表的内容复制到一个新的文档。 此代码的工作没有任何问题:
// Create a new Spreadsheet and copy the current sheet into it.
var newSpreadsheet = SpreadsheetApp.create("Spreadsheet to export");
var projectname = SpreadsheetApp.getActiveSpreadsheet();
sheet = originalSpreadsheet.getActiveSheet();
sheet.copyTo(newSpreadsheet);
然而,这份在从当前工作表公式 - 我想只复制值,公式在原始文档中引用其他表的数据。
我试图做到这一点,如下所示:
// Create a new Spreadsheet and copy the current sheet into it.
var newSpreadsheet = SpreadsheetApp.create("Spreadsheet to export");
var projectname = SpreadsheetApp.getActiveSpreadsheet();
sheet = originalSpreadsheet.getActiveSheet();
sheet.copyTo(newSpreadsheet, {contentsOnly:true})
然而,这会产生以下错误: 找不到方法(类)CopyTo从($ Proxy914,对象)。
我不确定我在做什么错。 任何援助将不胜感激。 提前致谢!
实际上有2 copyTo
,一个适用于纸张和其他适用于量程
据的文件(见上面的链接),第二个具有可选的参数复制值仅在第一没有。
我想你可以做的是使用Range.copyTo()
对于整个片范围复制到一个临时表(在同一个电子表格),然后复制临时表的其他电子表格,最后删除源电子表格中的临时表。
希望这是非常明显的;-)
在脚本库中有一个名为spreadsheetFrozenBackup脚本,通过它可以制成电子表格的副本。
要使用该塞尔暗示的range.copyTo。
它不是一个很长的脚本,所以我在这里重现它的信息:
// Make copy of current spreadsheet with backup name.
function spreadsheetFrozenBackup() {
// Get current spreadsheet.
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Name the backup spreadsheet with date.
var bssName = ss.getName() + " frozen at " + Utilities.formatDate(new Date(), "GMT", "yyyyMMdd HHmmss");
var bs = SpreadsheetApp.openById((DocsList.copy(DocsList.getFileById(ss.getId()), bssName)).getId());
// Make sure all the formulae have been evaluated...
SpreadsheetApp.flush();
// Get all the sheets in the spreadsheet
var bsl = bs.getSheets();
var pl = "";
for (var i = 0; i < bsl.length; i++) {
bsl[i].getDataRange().copyTo(bsl[i].getDataRange(), {contentsOnly:true});
pl = pl + " " + bsl[i].getName();
SpreadsheetApp.getActiveSpreadsheet().toast(pl, "Processed Sheets");
}
SpreadsheetApp.getActiveSpreadsheet().toast(bssName, "Frozen Backup");
}