需求:将FolderA中Excel转Google Sheet并迁移至FolderB的脚本
解决方案:调整脚本实现Excel转Sheet并迁移、删除原文件
Got it!我帮你调整了脚本,完美适配你的需求——把FolderA里的Excel文件转成Google Sheet后自动移去FolderB,删除原文件,彻底避免重复转换的问题。直接看修改后的代码:
function importXLSAndMove() { // 替换成你的FolderA和FolderB的ID const folderAId = '1hjvNIPgKhp2ZKIC7K2kxvJjfIeEYw4BP'; const folderBId = '你的FolderB ID'; // 这里替换成实际的FolderB ID const folderA = DriveApp.getFolderById(folderAId); const folderB = DriveApp.getFolderById(folderBId); // 只搜索FolderA里的.xls和.xlsx文件 const files = folderA.searchFiles('title contains ".xlsx" or title contains ".xls"'); while(files.hasNext()) { const xFile = files.next(); const fileName = xFile.getName(); // 检查文件后缀,避免误处理带.xlsx/.xls字样的非Excel文件 if (fileName.endsWith('.xlsx') || fileName.endsWith('.xls')) { const xBlob = xFile.getBlob(); // 设置转换后的文件名称(去掉原后缀,加上_converted) const convertedFileName = fileName.replace(/\.xlsx|\.xls$/, '') + '_converted'; // 配置转换后的文件:存到FolderB,设置标题 const newFileParams = { title: convertedFileName, parents: [{id: folderBId}] // 指定父文件夹为FolderB,避免存到根目录 }; // 执行转换 const convertedFile = Drive.Files.insert(newFileParams, xBlob, {convert: true}); console.log(`已转换并迁移文件:${fileName} -> ${convertedFileName}`); // 删除原Excel文件(移到回收站,可恢复;如果要彻底删除用xFile.delete()) xFile.setTrashed(true); } } }
关键修改说明:
- 指定目标文件夹:在
newFileParams里添加parents字段,直接把转换后的Google Sheet存到FolderB,解决原脚本存根目录的问题。 - 精准筛选Excel文件:用
title contains ".xlsx" or title contains ".xls"搜索,再通过endsWith校验后缀,避免误处理带Excel后缀字样的其他文件。 - 避免重复转换:转换完成后立刻把原Excel文件移到回收站(或彻底删除),下次运行脚本时这些文件不会被搜索到,自然不会重复处理。
- 优化文件名:转换后的文件名去掉原Excel后缀,改成
原文件名_converted,更清晰。
注意事项:
- 替换代码里的
folderBId为你实际的FolderB的ID。 - 第一次运行建议先找1-2个测试文件验证,确保逻辑正确再批量处理。
- 如果需要彻底删除原文件而不是移到回收站,把
xFile.setTrashed(true)改成xFile.delete()即可。
内容的提问来源于stack exchange,提问作者pm2588
相关产品推荐
相关产品推荐

