将 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 名称相同时,会发生错误。所以,我修改了它。
参考文献:
我学会了如何使用 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 名称相同时,会发生错误。所以,我修改了它。