V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rayn32
V2EX  ›  Google

求助: 怎么使用 Google api 访问自己私人表格

  •  
  •   rayn32 · 2022-02-15 18:06:38 +08:00 · 1938 次点击
    这是一个创建于 798 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 google 表格创建了一个私人的,没有共享 然后查找 api 文档找到 https://developers.google.com/sheets/api/quickstart/python 但是研究半天代码后,在 https://console.cloud.google.com/ 上面创建了一个 api 密钥 但是用密钥获取表格内容时 一直返回 403 Details: "The caller does not have permission"

    求助: 怎么用 api 访问自己私人表格

    11 条回复    2022-02-16 11:21:52 +08:00
    menglddd
        1
    menglddd  
       2022-02-15 18:25:47 +08:00
    需要在 console 中的开启对应的 api ,并在用户同意屏幕处配置权限
    youthfire
        2
    youthfire  
       2022-02-15 19:36:22 +08:00
    我一直觉得 google 的 api 文档写得糟糕
    具体的有点淡忘了,我用的也是 python ,一定要跑那个 sample ,会在你本地产生 storage.json ,相当于本地授权了。另外会是不是会用到 client_secret.json 还是 credentials.json 倒是忘记了。
    这个 google 文档的接口也是又乱又复杂,反正我是看不懂。用了一个第三方库,gsheets ,这个库最方便的地方就是可以很方便的把私有文档下载到本地,https://github.com/xflr6/gsheets
    lithiumii
        3
    lithiumii  
       2022-02-15 20:49:43 +08:00 via Android
    你要先建立一个服务用户,获得一个特别长的但是类似邮件格式的地址,把表格填这个地址分享给这个用户,才能有权限
    rayn32
        4
    rayn32  
    OP
       2022-02-15 21:36:47 +08:00
    @youthfire 是不是本地跑 sample 后,然后直接在服务器上用 credentials.json 文件就可以操作了,一次授权其它 ip 服务器都可以运行? 等会我试试这个方法
    @lithiumii 这个我也在尝试,不过官方文档的示例真是看不懂,后来网上找了 python 的 gspread 库,好像可以运行了
    rayn32
        5
    rayn32  
    OP
       2022-02-15 21:37:45 +08:00
    @lithiumii 还有这个方法有些麻烦,每次建立新的 Excel 都要重新分享给这个服务用户
    tonyaiken
        6
    tonyaiken  
       2022-02-16 00:18:39 +08:00 via iPhone
    @lithiumii 如果生成的用户自己的 token 可以访问用户 Drive 里所有文件
    damngoto
        7
    damngoto  
       2022-02-16 10:08:28 +08:00   ❤️ 1
    @youthfire 根本原因是谷歌的产品本身就很乱,不成体系。
    不过就算但论文档质量,离微软也还有很大距离。
    HankAviator
        8
    HankAviator  
       2022-02-16 10:30:15 +08:00
    @youthfire 我一个完全不会调接口的看谷歌的文档都调成功了,感觉文档挺好的啊,还有 API 试验场可以自己测。

    顺手一搜就有回答 https://stackoverflow.com/a/49965912/5303860
    rayn32
        9
    rayn32  
    OP
       2022-02-16 10:54:54 +08:00
    用 OAuth 2.0 客户端 ID 方法创建 API 终于搞出来了,这个国内网络问题真是太伤脑壳了
    国内认证登录成功后 python 一直返回 ssl 类的错误,都登录账户授权了,结果返回错误。。。
    最后解决: ssh 连接国外的服务器之后用 ssh 隧道,国内电脑上登录授权链接后服务器上也返回成功,获取了 authorized_user 信息。 之后表格不用再授权给服务账号也可以访问了
    总结坑,国内网络问题,开了翻墙全局也有问题,之前一直以为是 pyton 语言链接问题。。。有钱可以直接买个临时 Windows 登录获取授权信息
    youthfire
        10
    youthfire  
       2022-02-16 11:09:06 +08:00
    @HankAviator 可能我是业余开发者的关系。一般看第三方库的文档就觉得很清晰,而接触到 google api 的时候就觉得特别乱,比如对于 Google Drive 的交互,看 pypi 上的三方库一看就明白,但读不明白它的官方操作。
    @rayn32 我都是用 pysocks 临时走代理,功能完成后(比如下载),再关闭保持正常连接
    HankAviator
        11
    HankAviator  
       2022-02-16 11:21:52 +08:00
    @youthfire 我都不是开发者,我是数据分析师😂🤣看不懂的用试验场跑几个就很清楚了,还不用自己现去配 API 权限,也不用写代码
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1396 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:33 · PVG 01:33 · LAX 10:33 · JFK 13:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.