首页 > 解决方案 > 如何将一个谷歌表复制到另一个谷歌表

问题描述

我确实有两个不同的谷歌表格,我需要使用脚本将表格测试从一个复制到另一个,但是出现错误,对此有什么想法吗?

   var source_sheet= "https://address of the otgoogle sheet tho be copied over")"

  //here I'm on another google sheet, add a menu to copy the source from above
  var ui = SpreadsheetApp.getUi(); 
 //var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var result = ui.prompt(      
  'Add New Sheet',
  'Please enter Name',
  ui.ButtonSet.OK);         

  var button = result.getSelectedButton();
  var text = result.getResponseText();

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  sheet.copyTo(link_to_src).setName(text);

出现以下错误:异常:参数(字符串)与 SpreadsheetApp.Sheet.copyTo 的方法签名不匹配。(第 xx 行,文件“复制重命名”)详细信息关闭

任何帮助将提前表示赞赏..

标签: google-apps-scriptgoogle-sheetsgoogle-api

解决方案


  • 您想要将源电子表格的工作表(不是活动电子表格)复制到运行脚本的活动电子表格。
  • source_sheet是电子表格的 URL,如https://docs.google.com/spreadsheets/d/{spreadsheetId}/edit.
  • 运行脚本时,您希望使用对话框在源电子表格中输入工作表名称并将工作表复制到活动电子表格中。

我可以像上面那样理解。如果我的理解是正确的,那么这个修改呢?

修改后的脚本

请按如下方式修改您的脚本。在运行脚本之前,请将目标电子表格 URL 设置为source_sheet.

从:
var sheet = ss.getActiveSheet();
sheet.copyTo(link_to_src).setName(text);
至:
var sourceSheet = SpreadsheetApp.openByUrl(source_sheet).getSheetByName(text);
if (sourceSheet) {
  sourceSheet.copyTo(ss).setName(text).activate();
} else {
  ui.alert(text + " sheet was not found.");
}
  • 运行脚本时,会打开一个对话框。当输入源电子表格的表格名称时,表格被复制到当前激活的电子表格中,然后,复制的表格被激活。
  • 如果输入了不包括在源电子表格中的工作表名称,则会打开一个对话框。

参考:


推荐阅读