将Excel导入固定Google Sheet时遇文件未找到错误求助
解决Google Apps Script中Drive.Files.update的"File not found"错误
问题背景
需要将ExcelToImport.xlsx文件导入到已创建的UpdatedGSheet.gsheet中,已添加Drive API服务并编写脚本,但运行时抛出错误:
GoogleJsonResponseException: API call to drive.files.update failed with error: File not found: 1IrfZpQhXvlyK5HNSwgKgXYyOB_____Dj1DrRsJlPVp
错误原因分析
- Spreadsheet ID不匹配:错误信息中的ID比脚本里定义的
1IrfZpQhXvlyK5HNSwgKgXYyOB_____Dj1DrRsJlPVpE少了末尾的E,说明ID复制不完整或存在输入错误。 - 权限缺失:运行脚本的Google账号没有访问目标表格的权限,无法通过API定位到该文件。
- 授权范围不足:虽然启用了Drive API,但脚本的授权流程未获取足够的Drive访问权限。
解决方案
1. 修正Spreadsheet ID
打开UpdatedGSheet.gsheet的URL,复制d/与/edit之间的完整字符串(这就是表格ID),确保完全替换脚本中的spreadsheetId值,不要遗漏或多输入字符。
2. 验证目标表格权限
用运行脚本的账号打开UpdatedGSheet.gsheet,确认能正常编辑。如果无法访问,联系表格所有者授予编辑权限。
3. 重新授权脚本
关闭脚本编辑器后重新打开,运行myFunction并按照提示完成授权流程,确保授权弹窗中允许脚本访问Drive相关权限。
4. 可选:添加前置验证代码
在脚本开头加入文件存在性验证,提前排查问题:
function myFunction() { const xlsxFileName = "ExcelToImport.xlsx"; const spreadsheetId = "1IrfZpQhXvlyK5HNSwgKgXYyOB_____Dj1DrRsJlPVpE"; // 验证目标表格是否可访问 try { DriveApp.getFileById(spreadsheetId); } catch (e) { throw new Error("目标表格不存在或无权限:" + e.message); } const xlsx = DriveApp.getFilesByName(xlsxFileName); if (!xlsx.hasNext()) throw new Error("未找到Excel文件。"); Drive.Files.update({mimeType: MimeType.GOOGLE_SHEETS}, spreadsheetId, xlsx.next().getBlob()); }
内容的提问来源于stack exchange,提问作者OmarPoch
相关产品推荐
相关产品推荐

