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

能否通过Python将Google Apps Script关联至Google Sheets表格?

可以通过Python借助Google Apps Script API实现关联

是的,你可以通过Python调用Google Apps Script API,将本地保存的GAS脚本文件绑定到指定ID的Google Sheets表格,核心是创建绑定脚本项目并关联目标表格。以下是具体实现步骤:

前置准备

  • 在Google Cloud控制台启用Google Apps Script API。
  • 配置OAuth 2.0凭据(桌面应用或服务账号,根据使用场景选择),确保账号拥有目标表格的编辑权限。
  • 安装依赖库:
    pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
    

具体操作步骤

  1. 准备本地GAS脚本文件
    将你的GAS代码保存为.gs或.js文件,比如my_script.gs,示例内容:

    function helloSheet() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      sheet.getRange('A1').setValue('关联成功!');
    }
    
  2. Python代码实现关联
    下面是创建绑定脚本项目并上传本地脚本的示例代码:

    from googleapiclient.discovery import build
    from google_auth_oauthlib.flow import InstalledAppFlow
    from google.auth.transport.requests import Request
    import os
    import pickle
    
    # 权限范围,包含脚本API和表格API权限
    SCOPES = ['https://www.googleapis.com/auth/script.projects',
              'https://www.googleapis.com/auth/spreadsheets']
    
    def get_credentials():
        creds = None
        # 读取本地保存的凭据
        if os.path.exists('token.pickle'):
            with open('token.pickle', 'rb') as token:
                creds = pickle.load(token)
        if not creds or not creds.valid:
            if creds and creds.expired and creds.refresh_token:
                creds.refresh(Request())
            else:
                # 替换为你的凭据JSON文件路径
                flow = InstalledAppFlow.from_client_secrets_file(
                    'credentials.json', SCOPES)
                creds = flow.run_local_server(port=0)
            # 保存凭据供下次使用
            with open('token.pickle', 'wb') as token:
                pickle.dump(creds, token)
        return creds
    
    def bind_script_to_sheet(sheet_id, script_file_path):
        creds = get_credentials()
        service = build('script', 'v1', credentials=creds)
    
        # 读取本地脚本内容
        with open(script_file_path, 'r') as f:
            script_content = f.read()
    
        # 创建绑定到目标表格的脚本项目
        request = {
            'title': '绑定到表格的脚本',
            'parentId': sheet_id,
            'parentType': 'spreadsheet'
        }
        project = service.projects().create(body=request).execute()
    
        # 上传脚本文件到项目
        file_request = {
            'files': [
                {
                    'name': 'Code',
                    'type': 'SERVER_JS',
                    'source': script_content
                }
            ]
        }
        service.projects().updateContent(body=file_request, scriptId=project['scriptId']).execute()
    
        print(f"脚本已成功绑定到表格ID: {sheet_id},脚本项目ID: {project['scriptId']}")
    
    if __name__ == '__main__':
        # 替换为你的目标表格ID和本地脚本路径
        TARGET_SHEET_ID = 'your-spreadsheet-id-here'
        SCRIPT_FILE = 'my_script.gs'
        bind_script_to_sheet(TARGET_SHEET_ID, SCRIPT_FILE)
    

关键说明

  • 绑定脚本项目:通过设置parentType为spreadsheet、parentId为目标表格ID,创建的脚本会直接绑定到该表格,打开表格即可在「扩展程序」-「Apps脚本」中看到。
  • 权限注意:如果使用服务账号,需要先将服务账号邮箱添加为目标表格的协作成员,否则会有权限错误。
  • 脚本执行:如果需要触发脚本运行,还可以通过scripts.run API调用对应的函数,但需要额外配置执行权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:35:16