You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:39:02