Office Scripts解除密码保护工作表的代码修改及报错排查求助
Office Scripts解除密码保护工作表的代码修改及报错排查求助
你说得没错,最初的报错确实是因为调用unprotect()时没传入工作表的保护密码。Office Scripts里的WorksheetProtection.unprotect()方法是支持传入密码参数的,我来帮你修正代码,同时也帮你排查后来出现的“Workbook not found”报错。
一、修正解除密码保护的代码
你只需要把密码作为字符串参数传给unprotect()方法就行,写法非常简单:
selectedSheet.getProtection().unprotect("你的实际密码");
记得把代码里的"你的实际密码"替换成你真实的工作表保护密码。
二、完整的修改后脚本
这里给你整理好包含密码校验、且容错性更强的完整脚本:
function main(workbook: ExcelScript.Workbook) { let selectedSheet = workbook.getActiveWorksheet(); // 传入密码解除工作表保护 selectedSheet.getProtection().unprotect("你的实际密码"); // 移除自动筛选(加判断避免无筛选时报错) const autoFilter = selectedSheet.getAutoFilter(); if (autoFilter) { autoFilter.remove(); } // 删除第1至6行 selectedSheet.getRange("1:6").delete(ExcelScript.DeleteShiftDirection.up); }
我额外加了自动筛选的存在判断,防止工作表本来就没有设置筛选时触发不必要的报错。
三、排查“Workbook not found”报错
这个错误和密码无关,大概率是Power Automate与Excel文件的关联环节出了问题,你可以从以下几个方向排查:
- 确认Power Automate流程里指定的Excel文件路径、文件名完全正确,没有拼写错误或路径变动
- 检查目标Excel文件是否被移动、重命名或者删除了
- 确认Power Automate所使用的账号拥有该Excel文件的读写权限
- 如果文件存储在OneDrive/SharePoint上,检查文件是否处于锁定状态(比如有其他用户正在编辑)
备注:内容来源于stack exchange,提问作者Jonnyboi
相关产品推荐
相关产品推荐

