获取Google Web App部署版本号遇Apps Script API权限问题求助
解决方案
报错原因
绑定到Google Sheet的非独立脚本默认使用Google托管的默认云项目,普通用户没有该默认项目的控制台管理权限,因此无法手动启用Apps Script API,也就无法通过调用script.googleapis.com的方式获取部署信息。
可使用的替代方案
方案1:使用原生ScriptApp接口获取(仅脚本所有者/编辑者权限可用)
不需要调用外部API,直接用Apps Script内置的ScriptApp.getDeployments()方法即可获取所有部署信息,示例代码如下:
function getWebAppDeploymentVersions() { const deployments = ScriptApp.getDeployments(); const versionList = deployments.map(deployment => { return { deploymentId: deployment.getDeploymentId(), versionNumber: deployment.getVersionNumber(), webAppUrl: deployment.getEntryPoints()[0]?.getWebAppUrl() || "非Web App部署" } }); // 打印所有部署的版本号 versionList.forEach(item => Logger.log(`部署ID:${item.deploymentId},版本号:${item.versionNumber},Web App链接:${item.webAppUrl}`)); return versionList; }
如果你只需要最新的部署版本,直接取返回列表的最新条目即可。
方案2:预埋版本号(所有权限均可使用,适合Web App运行时调用)
如果你的需求是Web App在被用户访问时自动获取当前运行的版本号,可以在每次部署新版本时手动将版本号存入脚本属性,运行时直接读取即可,示例代码:
// 部署新版本时先运行这个函数更新版本号 function updateDeploymentVersion(versionNum) { const scriptProps = PropertiesService.getScriptProperties(); scriptProps.setProperty("currentDeploymentVersion", versionNum.toString()); } // Web App的doGet中直接读取版本号 function doGet(e) { const currentVersion = PropertiesService.getScriptProperties().getProperty("currentDeploymentVersion") || "未设置版本号"; return ContentService.createTextOutput(`当前Web App运行版本:${currentVersion}`); }
这个方法不需要任何额外API权限,稳定性更高,适合生产环境使用。
内容的提问来源于stack exchange,提问作者Riss TT
相关产品推荐
相关产品推荐

