将 sheet 从 SpreadSheet 文件复制到 Google 云端硬盘文件夹

Copy a sheet from a SpreadSheet file to a Google Drive folder

我学会了如何使用 Google 脚本。我正在尝试将 sheet 表格的副本复制到 Google Drive 文件夹中。这是可能的,但我需要用 Google 脚本来做到这一点。

我试试 :

var desFolder = DriveApp.getFolderById(folderID);
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
DriveApp.getFileById(spreadSheet.getId()).makeCopy("desired file name", destFolder);

但是它复制了所有电子表格,我需要复制一个 sheet 而不是整个电子表格。 我该怎么做?

您需要创建一个空的跨页sheet并使用您的copyTo method复制特定的sheet。

类似于:

var newSpreadsheet = SpreadsheetApp.create("desired file name")
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadSheet.getSheetByName("specific_sheet_name")
sheet.copyTo(newSpreadsheet)

在你的脚本中,做如下修改怎么样?

修改后的脚本 1:

function sample1() {
  var sheetName = "Sheet1"; // Please set the sheet name you want to copy.
  var folderID = "###"; // Please set the folder ID.

  var destFolder = DriveApp.getFolderById(folderID);
  var srcSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var file = DriveApp.getFileById(srcSpreadSheet.getId()).makeCopy("desired file name", destFolder);
  var dstSpreadsheet = SpreadsheetApp.open(file);
  dstSpreadsheet.getSheets().forEach(s => {
    if (s.getSheetName() != sheetName) {
      dstSpreadsheet.deleteSheet(s);
    }
  });
}
  • 在此修改中,Spreadsheet 被复制到目标文件夹。并且,除您要使用的 sheet 之外的 sheet 将被删除。

修改脚本 2:

function sample1() {
  var sheetName = "Sheet1"; // Please set the sheet name you want to copy.
  var folderID = "###"; // Please set the folder ID.

  var destFolder = DriveApp.getFolderById(folderID);
  var srcSpreadSheet = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet = srcSpreadSheet.getSheetByName(sheetName);
  var dstSpreadsheet = SpreadsheetApp.create("desired file name");
  var dstSheet = srcSheet.copyTo(dstSpreadsheet);
  dstSpreadsheet.deleteSheet(dstSpreadsheet.getSheets()[0]);
  dstSheet.setName(sheetName);
  DriveApp.getFileById(dstSpreadsheet.getId()).moveTo(destFolder);
}
  • 在此修改中,创建了一个新的 Spreadsheet 并将其移至目标文件夹。并且,将要使用的 sheet 复制到创建的 Spreadsheet 中。并且,默认的sheet被删除了。

  • 我注意到当我看到第二个示例脚本时,当 sheetName 的值与默认的 sheet 名称相同时,会发生错误。所以,我修改了它。

参考文献: