如何无需SDK在GCP网页端批量查看各项目已启用API服务?
批量查看多GCP项目已启用API的无SDK方案
我非常理解你管理数十个GCP项目时,逐个核对已启用API的痛苦——之前我也碰到过一模一样的困扰!下面分享两个完全不需要安装Google Cloud SDK的实用方案:
方法1:Google Apps Script + 表格批量拉取数据
这是我日常高频使用的方案,全程在网页端操作,还能自动把结果整理成表格方便对比:
- 新建一个Google Sheets,把所有需要查询的GCP项目ID(用ID比项目名称更准确)列在第一列(比如从A2开始,A1单元格写「项目ID」)
- 点击顶部菜单栏的「扩展」→「Apps Script」,打开脚本编辑器
- 替换默认代码为以下脚本:
function listEnabledAPIs() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const projectIds = sheet.getRange("A2:A" + sheet.getLastRow()).getValues().flat().filter(id => id); // 写入表头 sheet.getRange("B1:C1").setValues([["API名称", "API状态"]]); let row = 2; for (const projectId of projectIds) { try { // 调用GCP Service Usage API获取已启用服务 const url = `https://serviceusage.googleapis.com/v1/projects/${projectId}/services?filter=state:ENABLED`; const response = UrlFetchApp.fetch(url, { headers: { Authorization: `Bearer ${ScriptApp.getOAuthToken()}` } }); const data = JSON.parse(response.getContentText()); // 将结果写入表格 if (data.services) { data.services.forEach(service => { sheet.getRange(row, 1).setValue(projectId); sheet.getRange(row, 2).setValue(service.config.name); sheet.getRange(row, 3).setValue(service.state); row++; }); } } catch (e) { sheet.getRange(row, 1).setValue(projectId); sheet.getRange(row, 2).setValue("访问错误:" + e.message); row++; } } }
- 保存脚本后点击运行,首次运行会要求授权(需要你拥有对应GCP项目的
Service Usage Viewer权限),授权完成后就能自动拉取所有项目的已启用API到表格中
方法2:Cloud Asset Inventory批量导出
如果你的项目都归属同一个GCP组织或文件夹,这个方法效率更高:
- 打开GCP Console的「Cloud Asset Inventory」页面
- 在「查询资源」区域,选择资源类型为「Service」,添加筛选条件:
state = ENABLED - 在「范围」里选择要查询的组织、文件夹,或者直接勾选多个目标项目
- 点击页面右上角的「导出」,选择CSV或JSON格式,就能一次性获取所有选中项目的已启用API列表
另外纠正一个小误区:单个项目查看已启用API时,根本不用逐个点Library页面!直接打开https://console.cloud.google.com/apis/dashboard?project=PROJECT_NAME,页面里的「已启用的API和服务」列表会直接展示所有已启用项,比逐个核对效率高太多~
内容的提问来源于stack exchange,提问作者HSuke
相关产品推荐
相关产品推荐

