CopyTo从使用{contentsOnly:真正}不工作(copyTo using {conten

2019-07-19 21:05发布

作为一个警告,我是很新的谷歌应用程序的脚本。 我明白,可提供任何援助。

我想一个表的内容复制到一个新的文档。 此代码的工作没有任何问题:

// 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,对象)。

我不确定我在做什么错。 任何援助将不胜感激。 提前致谢!

Answer 1:

实际上有2 copyTo ,一个适用于纸张和其他适用于量程

据的文件(见上面的链接),第二个具有可选的参数复制值仅在第一没有。

我想你可以做的是使用Range.copyTo()对于整个片范围复制到一个临时表(在同一个电子表格),然后复制临时表的其他电子表格,最后删除源电子表格中的临时表。

希望这是非常明显的;-)



Answer 2:

在脚本库中有一个名为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");
}


文章来源: copyTo using {contentsOnly:true} not working