将 .XLSX 转换为 Google Sheet 并移动转换文件的脚本
Script to convert .XLSX to Google Sheet and move converted file
我知道可以使用脚本和驱动器 API 将 excel 文件转换为 Google Sheet,但我正在寻找脚本来转换excel sheet 并将转换后的文件移动到不同的文件夹。
所以需要的步骤如下:
- 将文件夹 A 中的 excel (.xls/.xlsx) 转换为 Google Sheet。
- 将转换后的文件从 FoldarA 移动到 FolderB。
- 从文件夹 A 中删除原始 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)
删除文件。
修改后的脚本:
在您使用此脚本之前,please enable Drive API at Advanced Google services。
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文件被完全删除。所以我评论了这个。首先,请使用示例文件测试脚本。
参考文献:
我知道可以使用脚本和驱动器 API 将 excel 文件转换为 Google Sheet,但我正在寻找脚本来转换excel sheet 并将转换后的文件移动到不同的文件夹。
所以需要的步骤如下:
- 将文件夹 A 中的 excel (.xls/.xlsx) 转换为 Google Sheet。
- 将转换后的文件从 FoldarA 移动到 FolderB。
- 从文件夹 A 中删除原始 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)
删除文件。
修改后的脚本:
在您使用此脚本之前,please enable Drive API at Advanced Google services。
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文件被完全删除。所以我评论了这个。首先,请使用示例文件测试脚本。