使用工作表在驱动器中移动文件

时间:2015-07-01 21:51:11

标签: google-apps-script google-drive-api google-sheets google-docs drive

回到另一个看似不可能完成的任务。显然,我办公室里的人无法在云端硬盘上移动文件夹,因此我的任务是自动化移动过程。正如您在Sheet(下面的链接)中看到的,我有一个路由系统的设置。

https://drive.google.com/file/d/0B2LmfUtAXAgkN1VHQlphOFEyNVk/view?usp=sharing

我有条件,例如文件夹的名称,应该在哪个文件夹以及需要移动到哪个文件夹。基本上,我正在尝试找到一个执行以下操作的脚本:

1)在Google表格中选择按钮时有效 2)将驱动器中的文件夹从文件夹A移动到文件夹B. 3)使用单元格引用。

不知道如何找到文件夹ID,因为要移动的文件夹会根据电子表格条件发生变化,这无济于事。我可能不会使用任何外部程序,因为它在政府系统上。有任何想法吗?我有这个很棒的脚本,但它似乎不能使用单元格引用。

function copyAndMove(file,folder){
var newfile=file.makeCopy('copy of '+file.getName(D9));
newfile.addToFolder(B1);//
newfile.removeFromFolder(DocsList.getRootFolder());}

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

要获取单元格中的值,您必须使用以下格式

 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];
 // First argument is row, second is column. 1,2 returns the value in B1
 var range = sheet.getRange(1, 1);
 var value = range.getValue();

所以你的最终代码是

function copyAndMove() {
     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var sheet = ss.getSheets()[0];
 // First argument is row, second is column. 9,4 returns the value in D9
     var D9 = sheet.getRange(9, 4).getValue();
     var B1 = sheet.getRange(1, 2).getValue();
     var file = DriveApp.getFilesByName(D9).next();
     var folder = DriveApp.getFoldersByName(B1).next();
     var newfile = file.makeCopy('copy of '+ D9, folder);
     file.setTrashed(true); 
}

我不确定你想对newfile.removeFromFolder(DocsList.getRootFolder());做什么,但是如果你想删除原始文件,那么这个函数的最后一行就是这样做的。

答案 1 :(得分:0)

找到将一个文件夹移动到另一个文件夹的代码。我已经找了好几个星期了,偶然发现了它。抱歉给您带来不便。

Implement a folder move function in Google Dirve