如何修复"API call to drive.revisions.update failed with error: Revision not found: 1."错误
解决Drive API修订更新报错"Revision not found: 1"的问题
问题原因
你的脚本硬编码了修订ID为1,但并非所有Google Slides文件的可发布修订ID都是1——部分文件的初始可发布修订编号不同,或是ID为1的修订已不存在,导致API调用失败。
修复方案
1. 动态获取有效修订ID
不再固定使用修订ID 1,而是通过Drive.Revisions.list()获取目标文件的所有修订,筛选出支持发布的条目。
2. 优化后的完整脚本
function FileID() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("sheet1"); if (!sheet) return; for (var i = 3; i <= 100; i++) { var url = sheet.getRange("A" + i).getValue(); if (!url) continue; // 跳过空行 var urlParts = url.split("/"); var targetFileId; if (urlParts[4] === "u") { targetFileId = urlParts[7]; } else { targetFileId = urlParts[5]; } sheet.getRange("D" + i).setValue(targetFileId); // 设置文件共享权限 var targetFile = DriveApp.getFileById(targetFileId); targetFile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); // 获取文件的所有修订 var revisions = Drive.Revisions.list(targetFileId); if (!revisions.items || revisions.items.length === 0) { sheet.getRange("E" + i).setValue("无可用修订"); continue; } // 从最新到旧遍历,找到第一个可发布的修订ID var publishRevisionId; for (var j = revisions.items.length - 1; j >= 0; j--) { var rev = revisions.items[j]; if (rev.publishAuto !== undefined) { // 确认修订支持发布 publishRevisionId = rev.id; break; } } // 执行发布操作 if (publishRevisionId) { Drive.Revisions.update( {published: true, publishedOutsideDomain: true, publishAuto: true}, targetFileId, publishRevisionId ); } else { sheet.getRange("E" + i).setValue("无有效可发布修订"); } } }
3. 关键优化说明
- 增加空URL判断,避免无效处理
- 将原变量
folderID改为targetFileId,命名更准确 - 新增错误记录,把问题行的异常情况写入E列,方便排查
- 动态获取修订ID,确保使用的是文件实际存在的可发布修订
前置检查
确保已在脚本编辑器中启用Drive API:打开脚本编辑器 → 点击服务 → 添加Drive API
内容的提问来源于stack exchange,提问作者Jessica Keenan
相关产品推荐
相关产品推荐

