使用 Drive.Files.copy 进行复制的结果是 PDF,而不是 Google 文档



我需要使用Drive.Files.copy函数在团队云端硬盘中复制文件。该功能是将模板Google文档复制到新的文件和文件夹。

下面的函数似乎复制了文件,但生成的文件是PDF(原始文件是Google文档(。这可能是我没有看到的简单事情。

teacherFolder是目的地。learnerDoc是原始文件。newDocc是新文件。

function test() {
var newFile = {
title: "Learner Guide - test",
description: "New student learner guide",
mimetype: 'application/vnd.google-apps.file',
supportsTeamDrives: true,
kind: "drive#user",
includeTeamDriveItems: true
};
// find Teacher's Learner Guides folder
var teacherFolder = DriveApp.getFolderById('1qQJhDMlHZixBO9KZkkoSNYdMuqg0vBPU');
// create duplicate Learner Guide Template document
var learnerDoc = DriveApp.getFileById('1g6cjUn1BWVqRAIhrOyXXsTwTmPZ4QW6qGhUAeTHJSUs');
//var newDocc = Drive.Files.copy(newFile, learnerDoc.getId());
var newDocc = Drive.Files.insert(newFile, learnerDoc.getBlob(), newFile);
var DriveAppFile = DriveApp.getFileById(newDocc.id);
teacherFolder.addFile(DriveAppFile);
Logger.log('file = ' + newDocc.fileExtension);
}

如何在团队云端硬盘中创建重复的 Google 文档并将其移动到其他文件夹?

出现"找不到文件"错误的原因是您尝试访问团队云端硬盘中的文件,但未在可选参数中指明您的代码知道如何处理 Google 云端硬盘和团队云端硬盘之间的差异。

您已设置此参数,但将其设置在与要插入/复制的文件关联的元数据中,而不是作为驱动器 API 的可选参数进行设置。

因此,要解决"找不到文件"错误,您需要更改元数据定义:

var newFile = {
title: "Learner Guide - test",
description: "New student learner guide",
mimetype: 'application/vnd.google-apps.file',
supportsTeamDrives: true,
kind: "drive#user",
includeTeamDriveItems: true
};

到元数据和参数:

const newFile = {
title: "Learner Guide - test",
description: "New student learner guide",
};
const options = {
supportsTeamDrives: true,
includeTeamDriveItems: true
};

我不确定您通过将 mimetype 作为通用文件提供来尝试做什么(您应该让驱动器 API 推断出Copy操作(,或者为什么您尝试设置kind参数,这通常是 API 响应内容的只读描述。

通过该更改,将可选参数作为对客户端库方法的最后一次调用传递:

var newDocc = Drive.Files.copy(newFile, learnerDoc.getId());

成为

var newDocc = Drive.Files.copy(newFile, learnerDoc.getId(), options);

相关阅读:

  • 团队云端硬盘支持
  • 应用程序脚本高级Drive服务
  • 应用程序脚本客户端库方法签名
  • Drive.Files.copy

感谢您@Tanaike的帮助和回答。有关此工作解决方案的更多详细信息,请访问:

Drive.Files.Copy 和"父项"不起作用

最新更新