如何将一个Google工作表复制到另一个Google工作表

时间:2019-09-18 00:52:43

标签: google-apps-script google-sheets google-api

我确实有两个不同的Google工作表,我需要使用脚本将工作表测试从一个脚本复制到另一个工作表,但是却出现错误,对此有何想法?

   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行,文件为“ copy-rename”)DetailsDismiss

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

  • 您要复制源电子表格(不是活动电子表格)到运行脚本的活动电子表格。
  • source_sheet是电子表格的网址,类似于https://docs.google.com/spreadsheets/d/{spreadsheetId}/edit
  • 运行脚本时,要使用对话框在源电子表格中输入表格名称,然后将表格复制到活动的电子表格中。

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

修改后的脚本

请按如下所示修改脚本。在运行脚本之前,请将目标电子表格网址设置为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.");
}
  • 运行脚本时,将打开一个对话框。输入源Spreadsheet的工作表名称时,会将工作表复制到当前活动的Spreadsheet中,然后激活复制的工作表。
  • 如果输入了源电子表格中未包含的工作表名称,则会打开一个对话框。

参考文献: