Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script copyTo使用{contentsOnly:true}无效_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script copyTo使用{contentsOnly:true}无效

Google apps script copyTo使用{contentsOnly:true}无效,google-apps-script,google-sheets,Google Apps Script,Google Sheets,作为警告,我对谷歌应用程序脚本非常陌生。我感谢任何可以提供的帮助 我正在尝试将工作表的内容复制到新文档中。此代码可以正常工作: // Create a new Spreadsheet and copy the current sheet into it. var newSpreadsheet = SpreadsheetApp.create("Spreadsheet to export"); var projectname = SpreadsheetApp.getActiveSpreadsheet

作为警告,我对谷歌应用程序脚本非常陌生。我感谢任何可以提供的帮助

我正在尝试将工作表的内容复制到新文档中。此代码可以正常工作:

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


我不确定我做错了什么。任何协助都将不胜感激。提前谢谢

实际上有两个
copyTo
,一个和另一个

根据文档(参见上面的链接),第二个参数有可选参数,仅复制值,而第一个参数没有

我想您可以使用
Range.copyTo()
将整个工作表范围复制到一个临时工作表(在同一个电子表格中),然后将该临时工作表复制到另一个电子表格,最后从源电子表格中删除该临时工作表


希望它足够清晰;-)

在脚本库中有一个名为spreadsheetFrozenBackup的脚本,通过它可以制作电子表格的副本

使用Serge提到的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");
}
//使用备份名称复制当前电子表格。
函数spreadsheetFrozenBackup(){
//获取当前电子表格。
var ss=SpreadsheetApp.getActiveSpreadsheet();
//用日期命名备份电子表格。
var bssName=ss.getName()+“冻结在”+Utilities.formatDate(新日期(),“GMT”,“yyyyMMdd HHmmss”);
var bs=SpreadsheetApp.openById((DocsList.copy(DocsList.getFileById(ss.getId()),bssName)).getId());
//确保所有的公式都经过评估。。。
SpreadsheetApp.flush();
//获取电子表格中的所有表格
var bsl=bs.getSheets();
var pl=“”;
对于(变量i=0;i