我知道可以使用脚本和驱动器API将Excel文件转换为Google表,但是我正在寻找脚本来转换Excel表并将转换的文件移动到其他文件夹。
因此所需的步骤如下:
- 将excel(.xls/.xlsx(转换为Foldera的Google Sheeth。
- 将转换后的文件从foldara移动到文件夹。
- 从foldera删除原始excel文件
- 希望步骤3避免这种情况,但避免重复已转换为文件。
excel文件被粘贴到正在同步到Google驱动器的本地文件夹中,并且文件不大于3MB。当前脚本如下。这是在转换文件,但将它们放在根文件夹中,并在脚本再次运行时复制转换。
function importXLS(){
var files = DriveApp.getFolderById('1hjvNIPgKhp2ZKIC7K2kxvJjfIeEYw4BP').searchFiles('title != "nothing"');
while(files.hasNext()){
var xFile = files.next();
var name = xFile.getName();
if (name.indexOf('.xlsx')>-1){
var ID = xFile.getId();
var xBlob = xFile.getBlob();
var newFile = { title : name+'_converted',
key : ID
}
file = Drive.Files.insert(newFile, xBlob, {
convert: true
});
}
}
}
- 您想将转换后的Google电子表格文件创建为" folderb"。
- 您想在" foldera"中删除xlsx文件。文件转换后。
- 您想使用Google Apps脚本上述实现。
如果我的理解正确,那么这种修改怎么样?在此修改中,我修改了您的脚本。
修改点:
- 您可以使用请求主体中
parents
的属性直接创建对特定文件夹的文件。 - 您可以使用
Drive.Files.remove(fileId)
删除文件。
修改后的脚本:
在使用此脚本之前,请在Advanced Google Services上启用Drive API。
function importXLS(){
var folderBId = "###"; // Added // Please set the folder ID of "FolderB".
var files = DriveApp.getFolderById('1hjvNIPgKhp2ZKIC7K2kxvJjfIeEYw4BP').searchFiles('title != "nothing"');
while(files.hasNext()){
var xFile = files.next();
var name = xFile.getName();
if (name.indexOf('.xlsx')>-1){
var ID = xFile.getId();
var xBlob = xFile.getBlob();
var newFile = {
title : name+'_converted',
parents: [{id: folderBId}] // Added
};
file = Drive.Files.insert(newFile, xBlob, {
convert: true
});
// Drive.Files.remove(ID); // Added // If this line is run, the original XLSX file is removed. So please be careful this.
}
}
}
注意:
- 如果XLSX文件的数量很大,则执行时间可能超过6分钟。
- 关于
// Drive.Files.remove(ID);
,运行此脚本时,请小心。因为在运行脚本时,原始的XLSX文件将完全删除。所以我评论了这一点。首先,请使用示例文件测试脚本。
参考:
- 文件:插入
- 文件:删除