使用AppScript将Excel转Google Sheet时遭遇Drive API“文件未找到”错误
问题解决:Drive.Files.insert 报错“File not found: WIP”
核心错误点分析
你的代码存在两处关键问题,直接导致了该报错:
parents参数传入类型错误
构建file元数据时,parents: [{id: folder}]中的folder是DriveApp返回的Folder对象,但Drive API要求传入的是文件夹ID字符串,需替换为folder.getId()。supportsAllDrives参数位置错误
supportsAllDrives是Drive API方法的可选参数,不能放在元数据对象里,必须作为Drive.Files.insert的第三个参数传入。
修正后的完整代码
function save_new_WIP() { // 查找目标邮件附件 var threads = GmailApp.search('in:inbox subject:"WIP Update" to: "xxxxxxxxx"'); var message = threads[0].getMessages(); var attachment = message[message.length - 1].getAttachments()[0]; // 将Excel附件保存到指定Drive文件夹 var folder = DriveApp.getFolderById("1uFvXhIIst_ksjZysyH-09TYeo5k44YvO"); var fileName = attachment.getName(); var newWIP = folder.createFile(attachment).setName(fileName); var ID = newWIP.getId(); // 转换Excel文件为Google Sheet const excel = DriveApp.getFileById(ID); let fileMetadata = { title: 'converted', mimeType: MimeType.GOOGLE_SHEETS, parents: [{id: folder.getId()}] // 修正:传入文件夹ID字符串 }; // 修正:将supportsAllDrives作为方法参数传入 file = Drive.Files.insert(fileMetadata, excel, {supportsAllDrives: true}); }
额外验证项
- 确认已在AppScript编辑器的服务菜单中启用了Drive API(需手动添加,不是默认的DriveApp服务);
- 确保脚本运行账号对目标Drive文件夹拥有读写权限。
内容的提问来源于stack exchange,提问作者projadm
相关产品推荐
相关产品推荐

