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

如何为Google Apps Script URL添加邮箱权限以实现Python数据获取

解决方案

1. 修正Google Apps Script语法错误

你的脚本存在两处拼写错误,会导致Web应用无法正常返回数据,先修正:

function getAllData() {
  const ss = SpreadsheetApp.getActive();
  let obj = {}
  ss.getSheets().forEach(sh => {
    obj[sh.getName()] = sh.getDataRange().getValues();
  })
  // 修正拼写:creatTextOutput → createTextOutput
  return ContentService.createTextOutput(JSON.stringify(obj))
  // 修正路径:Content.Service → ContentService
  .setMimeType(ContentService.MimeType.JSON)
}

2. 调整Web应用部署权限

如果你的Google表格允许公开访问,重新部署Web应用时,将谁可以访问此应用设置为任何人,甚至匿名。此时无需凭证,你原有Python代码就能直接获取数据。

若表格不能公开,可设置为组织内任何人,后续需在Python请求中携带公司Google账号的登录凭证。

3. 携带Cookie凭证访问(无需API密钥)

若必须验证公司邮箱身份,可通过携带Google账号的登录Cookie实现访问:

步骤1:导出浏览器的Google登录Cookie

  • 用浏览器登录公司Google账号,访问Web应用URL确认能正常打开
  • 打开浏览器开发者工具(F12)→ 应用 → Cookie → 复制https://script.google.com下的NID、SID等关键Cookie内容

步骤2:在Python请求中嵌入Cookie

使用urllib构建带Cookie的请求:

import urllib.request
import json
import pandas as pd

sheetURL = '你的Web应用URL'
# 替换为你导出的实际Cookie内容
headers = {
    'Cookie': 'NID=xxx; SID=xxx; HSID=xxx; SSID=xxx'
}

req = urllib.request.Request(sheetURL, headers=headers)
res = urllib.request.urlopen(req)
jsonData = res.read().decode('utf-8')

# 转为DataFrame处理
data_dict = json.loads(jsonData)
# 示例:获取指定工作表的数据
df = pd.DataFrame(data_dict['目标工作表名称'])

注意事项

  • Cookie会定期过期,到期后需重新导出更新
  • 禁止将Cookie内容提交到公共代码仓库,避免账号泄露

4. 更简便的替代方案:使用requests库管理会话

若可安装第三方库,requests的会话管理能更便捷地处理登录状态:

import requests
import json
import pandas as pd

session = requests.Session()
# 添加从浏览器导出的Cookie
session.cookies.set('NID', 'xxx', domain='.google.com')
session.cookies.set('SID', 'xxx', domain='.google.com')

response = session.get(sheetURL)
jsonData = response.text

# 转为DataFrame
data_dict = json.loads(jsonData)
df = pd.DataFrame(data_dict['目标工作表名称'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 23:45:45