如何使用DocsList将文件复制到特定文件夹?

时间:2012-11-11 03:06:16

标签: google-apps-script

我正在尝试使用此代码将Google电子表格复制到特定文件夹

var targetFolder = DocsList.createFolder("Testing");
var mainDocBlob = DocsList.getFileById("docId").getBlob();
var newMainDoc = targetFolder.createFile(mainDocBlob);

但是生成的文件是Pdf文件而不是电子表格,因为源代码是。

如何使用DocsList正确执行此操作并始终获取与源相同类型的文件。

由于

4 个答案:

答案 0 :(得分:5)

DriveApp服务于2013年8月20日更新,使用新方法File.makeCopy(destination)File.makeCopy(name, destination),允许脚本指定应将文件复制到的文件夹。

答案 1 :(得分:4)

正如this other post answer中提到的,Google文档不是普通意义上的“文件”,没有必要使用getBlob来复制它们,因为它们实际上没有Blob ...(而且它们不是'实际上,出于同样的原因,你的Gdrive实际上有'大小'或使用空间!)

相反,你应该使用(如David的回答中提到的)addToFolder()

从此刻起,您的文件将被移动到相应的文件夹。如果你需要在你的根文件夹中有一个副本,然后复制它,但根据你访问文件的方式,这并不总是必要的,因为你总是可以使用“所有项目”浏览你的谷歌驱动器,在那里你看到他们的所有项目相应的文件夹(以及它们所属的文件夹的名称)。

如果该文件已存在于文件夹中,则它将显示为属于这两个文件夹,您可以再次选择将其保留原样,或使用removeFromFolder()将其从原始文件夹中删除。

我知道这似乎与其他答案有点多余,但我希望它能让Google驱动器的组织更清晰。

答案 2 :(得分:2)

我建议使用 file makeCopy()来创建副本; addToFolder()将其放在目标文件夹中;和removeFromFolder()

答案 3 :(得分:2)

以下是应该运行的代码。我猜你什么时候得到它作为一个blob it.s默认将新文件转换为pdf。在下面的代码中,makeCopy默认为使新文件名为“Copy of ...”,但这可以是set by a string

var targetFolder = DocsList.createFolder("Testing");
var mainDoc = DocsList.getFileById("docId");
mainDoc.makeCopy().addToFolder(targetFolder);