使用Drive.Files.copy进行复制是PDF格式,而不是Google文档格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Drive.Files.copy进行复制是PDF格式,而不是Google文档格式相关的知识,希望对你有一定的参考价值。

我需要使用Drive.Files.copy函数来复制Team Drives中的文件。功能是将模板Google Doc复制到新文件和文件夹。

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

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云端硬盘和团队驱动器之间的差异。

您已设置此参数,但您将其设置在与要插入/复制的文件关联的元数据中,而不是作为Drive 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作为通用文件来做什么的(你应该让Drive API推断这个用于Copy操作),或者为什么你试图设置kind参数,这通常是读取仅描述API响应的内容。

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

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

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

相关阅读:

另一答案

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

Drive.Files.Copy and "parents" not working

以上是关于使用Drive.Files.copy进行复制是PDF格式,而不是Google文档格式的主要内容,如果未能解决你的问题,请参考以下文章

Google Drive API v3-将文档转换为pdf

为啥我不能使用 _mm_sin_pd? [复制]

使用 pd.read_clipboard 复制 MultiIndex 数据帧?

将成员从一个 pd 复制到另一个?使用 jcl 语句

pd.get_dummies 和 sklearn 是 python 中的一个热门编码器有啥区别? [复制]

使用 pd.read_clipboard 复制数据帧时如何处理自定义命名索引?