2017-05-26 134 views
0

我开始学习谷歌应用程序的脚本,并受到一点痛苦,:S。Google Apps脚本:如何将文件从根目录保存到特定文件夹?

所以,当我运行这个功能:

function importXLSX(){ 
    var files = DriveApp.getFolderById('0B5HXuvZIdqQ3bWlKNXFXZzhIcmc').searchFiles('title contains ".xlsx"'); 
    while(files.hasNext()){ 
     var xFile = files.next(); 
     var name = xFile.getName(); 
     if (name.indexOf('.xlsx')){ 
      var ID = xFile.getId(); 
      var xBlob = xFile.getBlob(); 
      var newFile = { title : name+'_converted', 
       key : ID, 
      } 
      file = Drive.Files.insert(newFile, xBlob, { 
      convert: true 
      }); 
     } 
     } 
    } 

converteds在驱动器的根目录设置的文件,但我倒是像

当我运行的代码,这些文件被保存在根文件夹,但我想将它们保存到特定的文件夹,如“Converteds”,所以如果有人知道如何解决它,我将非常感激!

这是关于函数的引用链接:Convert all xls files available in a folder into "Google Doc Spreadsheets"?

谢谢!

回答

3

由于您使用Drive API,您可以直接创建文件到特定文件夹。

我加parents: [{"id": "### Folder ID ###"}]newFile。请将### Folder ID ###更改为特定文件夹并尝试此操作。

修改后的脚本:

function importXLSX(){ 
    var files = DriveApp.getFolderById('0B5HXuvZIdqQ3bWlKNXFXZzhIcmc').searchFiles('title contains ".xlsx"'); 
    while(files.hasNext()) { 
    var xFile = files.next(); 
    var name = xFile.getName(); 
    if (name.indexOf('.xlsx')) { 
     var ID = xFile.getId(); 
     var xBlob = xFile.getBlob(); 
     var newFile = { 
     title : name+'_converted', 
     key : ID, 
     parents: [{"id": "### Folder ID ###"}] 
     } 
     file = Drive.Files.insert(newFile, xBlob, {convert: true}); 
    } 
    } 
} 

如果你想要从文件夹名称的文件夹ID。请使用以下脚本。

var folderId = DriveApp.getFoldersByName("### Folder name ###").next().getId(); 

如果我误解了你的问题,我很抱歉。

+0

太棒了!脚本工作得很好!非常感谢!如果我可以再问一个问题:在标题中插入日期,如“name +'_ converted',我必须做什么? – Falves

+0

例如,请将''title:''改为'title:name +'_ converted_' + Utilities.formatDate(新日期(),'GMT','yyyyMMdd_HHmmss'),''。'''GMT''是时区。如果您想使用其他时区,请更改。也可以自由更改日期格式 – Tanaike

+0

太好了@Tanaike!非常感谢! – Falves

0

首先,您需要获取文件夹ID(右键单击Google Drive中的文件夹并通过单击“获取可共享链接”来检查其共享选项,共享URL末尾的字符串是该文件夹的ID)然后为您转换的每个文件添加文件到目标文件夹。

var folder = DriveApp.getFolderById([folder-id]); 

while(files.hasNext()) { 
    var file = files.next(); 
    ... 
    ... 
    folder.addFile(file); 
} 

而且应该做的伎俩!

+0

嘿,@Dimu Designs,非常感谢您的回复。我应该在哪里放置folder.addFile(file);在最后}之前?我认为我错了。 – Falves

相关问题