将表格从电子表格文件复制到Google Drive文件夹



我学习了如何使用谷歌脚本。我正在尝试将一份表格的副本作为电子表格放入谷歌硬盘文件夹中。这是可能的手动,但我需要用谷歌脚本做到这一点。

我尝试:

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

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

在您的脚本中,以下修改如何?

修改的脚本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);
}
});
}
  • 在此修改中,电子表格将复制到目标文件夹。并且,除要使用的图纸外的图纸都将被删除

修改的脚本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);
}
  • 在此修改中,将创建一个新的电子表格,并将其移动到目标文件夹。然后,将要使用的工作表复制到创建的电子表格中。并且,将删除默认图纸。

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

参考文献:

  • deleteSheet(工作表(
  • 复制到(电子表格(

您需要创建一个空的电子表格,并使用copyTo方法复制特定的工作表。

类似于:

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

最新更新