Google 驱动器 API - 复制并替换?
Google Drive API - Copy and Replace?
我有一个使用 google 驱动器 API 的用例,我需要根据 ID 将现有文件 (A) 替换为另一个文件 (B)。我需要保留要替换的 ID 文件 (A)(因此调用 drive.copy 将不起作用,因为它会创建一个新 ID)。
下载文件 (B) 的最佳方法是使用 get 调用然后对文件 (A) 进行更新调用并传递来自 B 的数据流吗?
或者是否有 API 端点可以完成此任务?
解释:
没有这样的功能,因为您必须生成文件 (B) 的副本,因此创建一个具有全新 ID
的文件。
解决方法是删除文件 (A) 的内容并将文件 (B) 的内容复制到文件 (A),以便两个文件完全相同。如果是 Spreadsheet
场景,我有一个代码片段可以向您展示您可以遵循的逻辑。
解决方案/解决方法 - 电子表格文件:
function myFunction() {
// Get Spreadsheet A and B
const ssA = SpreadsheetApp.openById('ID of Spreadsheet A');
const ssB = SpreadsheetApp.openById('ID of Spreadsheet B');
// Get all sheets for both Spreadsheet A and B
const a_sheets = ssA.getSheets();
const b_sheets = ssB.getSheets();
// Create a temporary sheet so we can delete all the old sheets from Spreadsheet A
const temp_sheet = ssA.insertSheet('temporary_sheet')
// Delete all old sheets from Spreadsheet A
a_sheets.forEach(shA=>ssA.deleteSheet(shA));
// Copy all Spreadsheet B sheets to Spreadsheet A
b_sheets.forEach(shB=>shB.copyTo(ssA).setName(shB.getSheetName()));
// Delete temporary sheet
ssA.deleteSheet(temp_sheet);
}
一种非常相似的方法适用于 Folders
。即删除文件夹A的内容,将文件夹的内容复制到文件夹B。文件夹A和B的内容相同,但A保留其原始ID。当然,您可以使用 Slides
、Docs
等
我有一个使用 google 驱动器 API 的用例,我需要根据 ID 将现有文件 (A) 替换为另一个文件 (B)。我需要保留要替换的 ID 文件 (A)(因此调用 drive.copy 将不起作用,因为它会创建一个新 ID)。
下载文件 (B) 的最佳方法是使用 get 调用然后对文件 (A) 进行更新调用并传递来自 B 的数据流吗?
或者是否有 API 端点可以完成此任务?
解释:
没有这样的功能,因为您必须生成文件 (B) 的副本,因此创建一个具有全新 ID
的文件。
解决方法是删除文件 (A) 的内容并将文件 (B) 的内容复制到文件 (A),以便两个文件完全相同。如果是 Spreadsheet
场景,我有一个代码片段可以向您展示您可以遵循的逻辑。
解决方案/解决方法 - 电子表格文件:
function myFunction() {
// Get Spreadsheet A and B
const ssA = SpreadsheetApp.openById('ID of Spreadsheet A');
const ssB = SpreadsheetApp.openById('ID of Spreadsheet B');
// Get all sheets for both Spreadsheet A and B
const a_sheets = ssA.getSheets();
const b_sheets = ssB.getSheets();
// Create a temporary sheet so we can delete all the old sheets from Spreadsheet A
const temp_sheet = ssA.insertSheet('temporary_sheet')
// Delete all old sheets from Spreadsheet A
a_sheets.forEach(shA=>ssA.deleteSheet(shA));
// Copy all Spreadsheet B sheets to Spreadsheet A
b_sheets.forEach(shB=>shB.copyTo(ssA).setName(shB.getSheetName()));
// Delete temporary sheet
ssA.deleteSheet(temp_sheet);
}
一种非常相似的方法适用于 Folders
。即删除文件夹A的内容,将文件夹的内容复制到文件夹B。文件夹A和B的内容相同,但A保留其原始ID。当然,您可以使用 Slides
、Docs
等