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

如何跳过Python调用Google Apps Script的身份验证实现自动化?

解决Python调用Google Apps Script API时的手动认证问题

问题背景

需要实现从数据库提取数据推送至Google Sheets,并自动运行Apps Script宏格式化的全流程自动化,但当前使用InstalledAppFlow的认证方式每次运行都需要手动登录,无法适配调度器的无交互场景,调整权限范围也未解决问题。

解决方案:使用服务账号(Service Account)实现无交互认证

服务账号是Google Cloud提供的服务器到服务器交互身份,无需手动登录即可完成认证,完全适配自动化调度场景。

步骤1:创建并配置服务账号

  • 登录Google Cloud Console,进入对应项目的「IAM与管理」→「服务账号」页面,创建新服务账号,下载生成的JSON密钥文件(命名为service-account-key.json)。
  • 在Cloud Console的「API与服务」→「库」中搜索并启用Apps Script API。
  • 授权服务账号访问目标资源:
    • 打开目标Google Sheets,点击「共享」,将服务账号邮箱(密钥文件内的client_email字段)添加为表格编辑者。
    • 若Apps Script部署权限设为「仅自己」,需在Apps Script编辑器的「项目设置」→「云平台项目」中关联到对应Google Cloud项目,再在Cloud Console的IAM页面给服务账号添加「Apps Script API执行者」角色。

步骤2:修改Python代码

替换原有的InstalledAppFlow认证逻辑,改用服务账号凭证:

import os.path
from googleapiclient import errors
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google.oauth2.service_account import Credentials

# 仅保留必要权限范围,减少冗余风险
SCOPES = [
    "https://www.googleapis.com/auth/script.processes",
    "https://www.googleapis.com/auth/spreadsheets"
]

script_id = "AKfycbxtDnDYa2mTZKB6WoqK_D9PDsLZyqb7GQAh7pvER-K-rMFXYNa6oVOhzXHsyfyl8vLz"

# 基于服务账号密钥创建认证凭证
creds = Credentials.from_service_account_file(
    "service-account-key.json",
    scopes=SCOPES
)

# 构建Script API服务实例
service = build("script", "v1", credentials=creds)

# 执行Apps Script指定函数
request = {"function": "helloWorld"}
try:
    response = service.scripts().run(scriptId=script_id, body=request).execute()
    if "error" in response:
        error_details = response["error"]["details"][0]
        print(f"执行失败: {error_details['errorMessage']}")
    else:
        print(f"执行结果: {response['response'].get('result')}")
except HttpError as err:
    print(f"HTTP请求错误: {err}")

关键注意事项

  • 服务账号的JSON密钥文件需安全存储,禁止上传至公共代码仓库。
  • 权限范围仅保留实际需要的项,避免过度授权带来的安全风险。
  • Apps Script部署时需设置为「在我(开发者)授权下运行」,确保服务账号具备调用权限。

内容的提问来源于stack exchange,提问作者Aditya J

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 19:07:02