有没有办法复制和重命名文件,并将该副本移动到特定的文件夹,而不需要在根文件夹中有第二个副本?我已经使用了复制,重命名和按不同顺序移动的组合,但每次我最终都会得到重命名文件的根驱动器副本。这是默认情况下?至少可以说是令人讨厌的。如何将文件复制并移动到Google Apps脚本中的文件夹?
回答
是的,Google不提供移动方法有点奇怪。但是,考虑到驱动器是如何工作的,并且文件可以属于多个文件夹,那么您就有自己的动作。下面是一个简单的移动功能,我写道:
// Moves a file to a new folder by removing all current
// parent folders and then adding the new one.
function moveFileTo(fileObj, folderObj) {
// Attempt the move only if folderObj has a value.
// Otherwise, the file will be left without a folder.
// (Lost files can be found in the "All items" area.)
if (folderObj) {
var folders = fileObj.getParents();
for (var i = 0; i < folders.length; i++) {
fileObj.removeFromFolder(folders[i]);
}
fileObj.addToFolder(folderObj);
return true;
}
return false;
}
基本上,像这样使用:
var file = DocsList.getFileById(fileID);
var folder = DocsList.getFolder('Some folder name');
// Make a backup copy.
var file2 = file.makeCopy('BACKUP ' + Utilities.formatDate(new Date(), Session.getTimeZone(), 'yyyy-MM-dd') + '.' + file.getName());
// Move the backup file.
if (moveFileTo(file2, folder)) {
...
我要指出,这个简单的功能正是...简单。它假定你可以重新打包所有父文件夹 - 拥有或共享。如果您不小心,这可能会对各种用户的各种共享文件夹中的共享文件产生意想不到的后果。但是,它不会显示删除不与此脚本的用户共享的父文件夹 - 这很好。无论如何,更好地控制事物的一个明显替代方法是指定“from”文件夹以及“to”文件夹。
编辑︰我看了你原来的问题(在编辑之前),并从那里我明白了你有关文件和文件夹如何在Google云端硬盘中工作的困惑。
当您制作一个文件的副本时,您会在根文件夹中获得一个新文件,当您将此新文件添加到另一个文件夹时,您必须考虑将此文件粘贴到标签上而不创建任何新副本。
实际上您可以在根目录和其他文件夹中看到该文件,但是这是具有两个不同标签的文件!(你注意到,因为你试图删除它,看到它在两个地方都被删除了)
你必须做的唯一事情就是在文件夹中获取新文件并且不在根目录中显示它“根标签”。
这就是谷歌驱动器的工作原理。当你考虑它并与本地硬盘存储进行比较时,它会变得有逻辑性:当你在同一个逻辑驱动器上将文件从一个文件夹移动到另一个文件夹时,不会移动数据(即磁盘上的字节),而只需告诉磁盘操作系统这个文件在地图上的其他地方。
因此,考虑Google Drive是一个非常大的磁盘单元,它拥有数十亿个文件,无法移动,但您可以根据需要粘贴尽可能多的标签;-)(最重要的标签是您的Google帐户ID !)
并与在情况下,这些标签打你描述只是试试这个简单的功能:
function copyAndMove(file,folder){
var newfile=file.makeCopy('copy of '+file.getName());// here you can define the copy name the way you want...
newfile.addToFolder(folder);// add the copy to the folder
newfile.removeFromFolder(DocsList.getRootFolder());// and remove it from your root folder
}
来测试它只需使用2个所需参数:file
对象ANF的folder
对象,你可以得到从许多不同的方法,请参阅DocsList documentation了解如何获取它的详细信息,但如果您需要但我想您已经知道;-)
谢谢你的回答也帮助了我。我想知道这是怎么回事,为什么有两个副本。我希望我去上这种学校。 – zachdyer
在新版本的Google应用程序脚本中,您需要实现的任务是如下:
file.makeCopy("new name", folder);
- 1. Google Apps脚本:如何自动将文档复制到新文件夹?
- 2. 用于将文件移动到同名文件夹的Google Apps脚本
- 3. Google Apps脚本。 *复制*文件
- 4. Google Apps脚本:如何在文件夹中创建文件?
- 5. Shell脚本来创建文件夹并将文件移动到新文件夹
- 6. 将Google Spreadsheets与Google Apps脚本合并到一个文件夹中
- 7. 在shell脚本中移动文件并同时将文件复制到同一文件夹
- 8. 在Google Apps脚本中获取脚本的文件夹ID
- 9. 将复制文件并将它们移动到另一个文件夹中的脚本
- 10. Shell脚本 - 将文件移动到文件夹中
- 11. 在Google Apps脚本上创建上传文件的文件夹
- 12. 苹果脚本:将文件移动到适当的文件夹
- 13. Apple脚本:将文件复制到生成的文件夹
- 14. 如何将文件复制到Python脚本中的特定文件夹?
- 15. 复制.bat关闭USB并将其复制到启动文件夹脚本 - WinXP
- 16. 如何将文件从子文件夹移动到文件夹
- 17. Windows脚本根据名称将文件移动到文件夹
- 18. KSH脚本将文件移动到SFTP文件夹
- 19. 将文件夹复制到文件夹
- 20. 将文件夹集合复制到子文件夹中的脚本
- 21. 将文件夹移动到文件夹中移动
- 22. 创建文件夹并将文件复制到本地磁盘
- 23. 如何将旧文件夹复制到新文件夹并重命名新文件夹中的文件
- 24. 如何使用phonegap将文件从一个文件夹移动/复制到android中的其他文件夹?
- 25. Bash脚本将文件移动到以该文件命名的文件夹
- 26. 将文件上传到Google网站。 Google Apps脚本
- 27. 如何使用Google Apps脚本将多个Google文档添加到Google云端硬盘文件夹?
- 28. 将装载的文件夹复制到本地文件夹
- 29. 使用Apps脚本从Google Site搜索Google Drive文件夹
- 30. 如何在复制文件时将文件复制到python文件夹中
当使用'file.makeCopy'时,新创建的文件位于根文件夹中,因此您不需要所有这些'getParents'的东西。保持简单;-) –
@Sergeinsas你假设我写这个函数只移动新鲜的副本。永远不要做任何事 – juanitogan
我没有假设任何东西:你写了“像这样使用...做一个备份副本...” –