Google Service Accounts

Polar Sponsor
爱发电 赞助
.NET 9.0

通过 Google 服务账户在代码中读取或写入用户的 Google 表格、文档、云盘或日历——无头、无需 OAuth 浏览器流程。适用于已获得服务账户凭证的情况。

Google服务账户 1:A服务账户是Google一个脚本账户:它有一个电子邮件,登录一个密钥文件,和. 访问任何已共享的 Doc / Sheet / Driv

功能概述

Google服务账户 1:A服务账户是Google一个脚本账户:它有一个电子邮件,登录一个密钥文件,和. 访问任何已共享的 Doc / Sheet / Driv是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Google 服务账号

服务账号是一种专为脚本使用的 Google 账号:它拥有一个邮箱地址,通过密钥文件进行身份验证,并可访问已明确共享给该邮箱地址的任意 Doc / Sheet / Drive 文件 / Calendar —— 共享方式与向同事共享完全一致。无需浏览器授权、无需人工点击“允许”、也无需刷新访问令牌。

1. 您是否已有密钥?

请检查当前工作目录下是否存在 credentials.json 文件,或是否存在名为 CREDS_JSON 的环境变量,其值为包含密钥信息的 JSON 字符串。该服务账号的邮箱地址即该 JSON 中的 client_email 字段(格式如:name@project.iam.gserviceaccount.com)。若您已具备该密钥,请直接跳至第 3 步。

2. 尚无密钥 —— 引导用户完成配置流程

请明确告知用户:此过程完全免费,且仅需一个基础 Google 账号即可完成。 使用个人 gmail.com 邮箱即可 —— 无需信用卡,也无需开通结算账号。创建项目、服务账号及密钥均不产生任何费用;Sheets / Docs / Drive / Calendar 等 API 在 generous 的每日配额内亦完全免费。该配置为一次性操作,耗时仅需几分钟。

若用户已安装 gcloud CLI 工具,请提供以下命令供其执行:

gcloud auth login
PROJECT="agent-bot-$(date +%s)"
gcloud projects create "$PROJECT"
gcloud config set project "$PROJECT"
gcloud services enable sheets.googleapis.com drive.googleapis.com 
  docs.googleapis.com calendar-json.googleapis.com
gcloud iam service-accounts create agent-bot --display-name="Agent Bot"
SA="agent-bot@${PROJECT}.iam.gserviceaccount.com"
gcloud iam service-accounts keys create credentials.json --iam-account="$SA"
echo "现在请将您的文件/日历共享给:$SA"

若用户未安装 CLI 工具,请引导其参考 README.md 中的控制台向导(标题为“Click through the console”)—— 全程约 20 次点击,同样完全免费。无论采用哪种方式,最终结果一致:获得一个 credentials.json 文件及其中的 client_email。

3. 唯一规则:必须共享目标文件

服务账号默认无任何访问权限。对于每一个您需要操作的文件,用户都必须手动打开该文件 → 点击共享 → 粘贴 client_email → 设置权限为编辑者(如仅需只读,则设为查看者)→ 发送。对于日历:进入其设置 → 选择与特定人员共享。

若遇到 SpreadsheetNotFound 或 403 PERMISSION_DENIED 错误,几乎可以确定并非代码缺陷 —— 而是目标文件尚未被共享。 请明确告知用户具体是哪个文件、以及应使用哪个 client_email,以便其一键修复。切勿盲目重试。

4. 使用密钥

可运行示例位于 quickstart.py(执行命令:python quickstart.py sheets|docs|calendar)。核心用法如下:

Sheets(通过友好的封装库 gspread —— 其默认作用域已包含 drive,因此可通过名称直接调用 open()):

import gspread
gc = gspread.service_account(filename="credentials.json")
sh = gc.open("My Spreadsheet")                 # 仅因该表格已共享给服务账号,故可成功打开
sh.sheet1.update(values=[["hello", "from a robot"]])
sh.sheet1.append_row(["logged", "by agent"])   # 代理最常用的操作

其他任意 API(Docs、Calendar、Drive 等)则通过 google-api-python-client 访问 —— 同一份凭据对象可驱动所有 API,仅需调整作用域(scopes)列表即可:

from google.oauth2 import service_account
from googleapiclient.discovery import build

creds = service_account.Credentials.from_service_account_file(
    "credentials.json", scopes=["https://www.googleapis.com/auth/documents"])
docs = build("docs", "v1", credentials=creds)

在容器或 CI 环境中,请改从环境变量加载密钥而非读取文件:

import os, json, gspread
gc = gspread.service_account_from_dict(json.loads(os.environ["CREDS_JSON"]))

5. 边界限制 —— 请勿绕过这些约束

  • 始终申请最小必要的作用域(scope);除非确需写入,否则务必添加 .readonly 后缀。编辑文档前,请先以只读方式读取它。
  • 服务账号无法访问用户的私有 Gmail、个人日历或整个 Drive —— 它仅能访问明确共享给它的内容。若需访问上述私有数据,则必须由用户本人完成 OAuth 浏览器授权流程;切勿尝试以服务账号替代此步骤。
  • Calendar:共享日历的 ID 即为其所有者的邮箱地址(calendarId="primary" 表示服务账号自身空置的日历),且服务账号无法为事件添加参会人 —— Google 将返回 forbiddenForServiceAccounts 错误。您可以自由创建、修改或删除事件,但切勿尝试发送邀请。
  • 服务账号的邮箱地址仅作为身份标识,而非真实邮箱 —— 发往该地址的邮件将被退回。它无法注册任何服务,也无法接收确认链接。
  • 请将 credentials.json 视为密码:持有该文件者即等同于该服务账号本身。切勿将其提交至代码仓库,也切勿粘贴至任何共享环境中。

详见 README.md 中的完整说明 —— 包括为何此方案优于自行搭建 OAuth 应用、免费额度详情、作用域参考表,以及常见问题排查指南。

相关专题

更多
Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

2026.10.21

0

15

Playwright 页面操作指南
Playwright 页面操作指南

Playwright页面操作专题汇集元素定位、点击与输入、等待响应、多页面切换、Iframe、事件监听及文件处理的已审核文章,便于按操作场景查阅示例与常见问题。

2026.10.21

0

16

Playwright 入门教程
Playwright 入门教程

Playwright入门专题汇集测试框架安装、VS Code配置、录制脚本、编写首个用例、运行调试及查看报告的已审核文章,帮助初学者搭建端到端测试流程。

2026.10.21

0

16

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

2026.10.16

0

15

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

2026.10.16

0

15

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

2026.10.16

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Gemini Notebook官方手册
Gemini Notebook官方手册

共0课时 | 0人学习

Google Cloud开发者文档
Google Cloud开发者文档

共0课时 | 0人学习

Veo 3 官方文档
Veo 3 官方文档

共0课时 | 0人学习