能否使用Google Apps Script访问GCP服务及操作Compute Engine虚拟机?
可以用Google Apps Script调用Compute Engine API管理虚拟机吗?
当然可以,你完全可以通过Google Apps Script调用Compute Engine API来执行GET、DELETE等操作,管理你的GCE虚拟机。下面是具体的上手步骤:
1. 启用Compute Engine API
先在你的GCP项目中启用Compute Engine API,这是调用接口的前提。
2. 配置Apps Script的OAuth权限
要让Apps Script有权限访问Compute Engine服务,需要配置正确的OAuth范围:
- 在Apps Script编辑器中,点击右上角的「设置」图标,勾选「显示appsscript.json清单文件」
- 打开
appsscript.json,在oauthScopes数组中添加Compute Engine的权限范围:
{ "oauthScopes": [ "https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/script.external_request" ] }
3. 使用UrlFetchApp调用API示例
Apps Script内置的UrlFetchApp可以直接发送HTTP请求到Compute Engine API,以下是两个常用操作的示例:
获取指定区域的虚拟机列表(GET请求)
function getGCEInstances() { const projectId = "你的GCP项目ID"; const zone = "你的虚拟机所在区域(比如us-central1-a)"; const url = `https://compute.googleapis.com/compute/v1/projects/${projectId}/zones/${zone}/instances`; const options = { method: "GET", headers: { "Authorization": `Bearer ${ScriptApp.getOAuthToken()}` } }; const response = UrlFetchApp.fetch(url, options); const instances = JSON.parse(response.getContentText()); console.log("虚拟机列表:", instances); }
删除指定虚拟机(DELETE请求)
function deleteGCEInstance() { const projectId = "你的GCP项目ID"; const zone = "你的虚拟机所在区域"; const instanceName = "要删除的虚拟机名称"; const url = `https://compute.googleapis.com/compute/v1/projects/${projectId}/zones/${zone}/instances/${instanceName}`; const options = { method: "DELETE", headers: { "Authorization": `Bearer ${ScriptApp.getOAuthToken()}` } }; const response = UrlFetchApp.fetch(url, options); console.log("删除请求响应:", response.getContentText()); }
4. 授权与测试
第一次运行脚本时,会弹出OAuth授权窗口,选择有权限操作该GCP项目中Compute Engine资源的账号完成授权即可。
注意事项
- 如果你的Apps Script是独立脚本(不是绑定在Google Workspace文档中的),建议关联到你的目标GCP项目,避免使用默认的云项目导致权限问题
- 确保执行脚本的账号拥有Compute Engine的相关权限(比如
Compute Instance Admin (v1)角色)
内容的提问来源于stack exchange,提问作者REST_coder
相关产品推荐
相关产品推荐

