9

我正在编写一个python(ver3)脚本来使用gspread访问谷歌文档。

1) 导入gspread2) 从oauth2client.service_account导入ServiceAccountCredentials3) 范围=['https://spreadsheets.google.com/feeds']4) credentials=ServiceAccountCredentials.from_json_keyfile_name(r’/path/to/jason/file/xxxxxx.json’,范围)5) gc=gspread.authorize(凭据)6) wks=gc.open(“测试”).sheet1

测试是一个谷歌工作表它似乎已打开并读取良好,但如果我尝试从Office excel文件读取,则会出现错误。它们的外观如下:在此处输入图像描述

test和mtg所在的文件夹与我在json文件中收到的电子邮件共享。这两个文件也与该电子邮件共享。

尝试:

wks=gc.open(“mtg.xls”).sheet1

wks=gc.open(“mtg.xls”)<第一张表的名称>

wks=gc.open(“mtg”)<第一张表的名称>

错误:

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/gspread/client.py“,152号线,处于开放状态引发电子表格未找到gspread.exceptions。未找到电子表格

0

3个答案

重置为默认值
20

我得到这个是因为我错过了第四步在这里

转到电子表格并与步骤中的client_email共享以上。否则,当试图使用gspread访问此电子表格。

1
  • 1
    谢谢,这帮我解决了问题:) 评论 2020年1月4日9:18
7

这里有一个非常重要的提示:gspread文档

非常重要!转到您的电子表格并与上面步骤中的client_email共享它。就像你使用其他谷歌账户一样。如果你不这样做,你会得到一个gspread.exceptions。尝试从应用程序或脚本访问此电子表格时出现SpreadsheetNotFound异常。

这意味着您需要共享电子表格(打开电子表格,然后单击共享按钮,然后粘贴电子邮件id)使用“客户端电子邮件”从google开发人员控制台获得的JSON文件中提供的邮件id

如:

{“type”:“service_account”,“项目id”:“speeqedy-octane-317516”,“私人密钥id”:“8ct0ad00e3e59d49a576012cb515ea89e4e49cc4”,“私钥”: “-----开始私钥-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCWCwggSjAgEAAoIBAQCOlC07MwSYGr54\nMx1+XAXC2k8HrBA/W6I3PZxnG5CUTPL8rJy8Ne2kuXW2k3qN/A0CKf2yUKc0DbIP\n+LsCDYt6ikTOpb5VeToRMFPlg3dwcghsVFlO2RKVZc1NiWYDiU5jqjy/WOpqNH\nMZb PDJchhApiyEb+brSpgag0Smpn8oWNBFNUqyN7n+dQMDxlwe9CniM6p19rhwyX\nPPwYcONb/FQffIRrjUlSbxAV+uTwoN/BeTN/jDvjDSdbF2jfBzis/sBejZAt3wsA\nzM2KcNu/bGFck+Slg0rXbHf8qPW4C+kuGe4x5KI4y/SG77TuufNfeIIadwVblAH\nruhlzGRvAgMBAAECggEAQ7+rIncilrgWi30WZaWKY0Viyi17Zu++y+rtt5zEfYN2\n7pOCwngJnP03LvMzB+ads8qKL0HdwYFEe+IobKmWPQkITYfIl1+2LpwFEzElE5tx\n4nikSasIA75Z5EH/aRpHltp1QMG4w/jwmvK4S1gbNCTO3pN2EI5AME9YwsgdeZhx\nFPbTlZ7CstqrvJwrejInuX7b7+YLCRUiLz09n5xDVLCpgzqcUxRUIlX6qnQ5O5fQ\nUmVI4qeeIMb3TE2X6JN2Hon5RCqA1j6kNj3auIgDgrqCarcjX4MU9hDlBfj+MRKM\nZz19lNCYBL7D2p9o+QJMzBakmUawdEdm0PNnzouxGQKBgQDIHE6u84YzqWsyAm\nJoON9jWq3Z0Dp9Woxd1c12sJGaqpCjvejAHsUklRDLSnj/9TxySxCBtHzOkpWZ27\nC1+ZQVkHgVkVkJaBRJ2d xwsNODDyvn12gN2OE00e0IATx6hIuMrZBiisrOldlzkfbe\nbrzdpcverz/j8O+DU+xlpkd+bQKBgQC2ZmkO+P2fofc4AbnLNKqr8e9NVqMAHovi\nj6dqE1/YQwarXyORHlpqZy0cqG1yXHiTXdQCkRf2oaLtUMoNARywCNNsJcmTUccm\nbG1/g3KdcsTu5r7/IgJjJ6Oytd5WE3nOOG0pN0PxTVjhC5GIMdDqT7bO7PxYxt8J\ny5stQwE0ywKBgEjUZJB2xsHS+4PVdaHs6nxEW4vwVDD8aHqgaMxdaotJWB9lphx9\nAEYuPJjO8wD5G4g2NlhoBuW+4i02fH2 SyhxQ+EIPBYSy6I9oRx6MfK56WxRqBWjk\nwjIjJQ2Axa4hh1iP4ri6os1FJHs3A3T59ETgnttdOdUzRcS+DqWpfaRAoGADnjx\nvQ5kVX4l6kLZOQ45ou7wRcut8O0tbVQ0pmQHKRBOf3mnweEHM/URbMGFbd+lNn\njwyUKi2JD+tpHL8J163bmKkm5VmHw7S2u3dikLuahJoqbXP1XIi4pGVpzsqcz5AK\nmUqZSwpoTGZyoSpXu4UQzbqjuC4sb5GAcFfRyECgYEqPEqRTfjU48q8X5ZNx/D\nGze5ZU8PpkOr9viffcptt7dF9f/SMyqY6a8oDzm70tN8IHsctoadu/9ZUA C56XO\nZtc96uppNBHM/ZZr2eXR6iU8fXTkHgA009xYeOIciS/exvlntTn7qeBiLb5DyA2s\nHB/iyGpo6KQBl/rRtcNxQXw=\n-----结束私钥-----“,“客户端电子邮件”:“[电子邮件保护]",“client_id”:“102481923285078876543”,“auth_uri”:“https://accounts.google.com/o/oauth2/auth",“token_uri”:“https://oauth2.googleapis.com/token",“授权提供者_x509_cert_url”:“https://www.googleapis.com/oauth2/v1/certs",“客户端_x509_cert_url”:“https://www.googleapis.com/robot/v1/metadata/x509/cybor%40specifid-octane-317516.iam.gserviceaccount.com“}

如果这是您的JSON文件,则需要复制客户端电子邮件那就是[电子邮件保护]然后将您的工作表共享到此电子邮件id。

1
  • 谢谢,这个对我来说很有用。 评论 2022年1月18日14:59
5

没有.xls(.xls)要添加到文件名末尾,数据将以不同的格式保存(以后可以导出为.xls(.xls)).

尝试将代码分解为:

ss=打开(“MTG_Collection_5_14_16”)ws=ss.worksheet(“<NameOfFirstSheet>”)

并发布错误消息(如果有)。

电子表格实例具有属性表1因为它是第一个工作表的默认名称。不锈钢表1实际上返回索引为0的工作表,无论其名称是什么。

如果要访问其他工作表,需要使用ss.工作表(“<title>”)ss.get_worksheet(<索引>).第<第一张表的名称>将不起作用。

5
  • 谢谢。。。第1行到第5行添加了以下内容:ss=gc.open(“mgt”)ws=ss.worksheet(<“nameOfFirstSheet”>)values=ws.row_values(1)print(values)--->失败,错误为:ss=gc.open“”mgt“)File“/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/gspread/client.py“,第152行,在open-riseadsheetNotFound-gspread.exceptions中。未找到电子表格 评论 2016年6月5日22:38
  • 同样的测试代码(googlesheetdoc)运行良好。 评论 2016年6月5日22:42
  • 1
    如果要编辑xls公司使用gspread文件,您需要先将其转换为google文档格式。如果你试图打开管理.xls从电子表格应用程序界面手动打开时,系统会询问您是要将其作为视图打开,还是创建一个具有相同文件名的副本。第二步,将副本与凭据json文件中的电子邮件地址共享,然后它就会正常工作。 评论 2016年6月5日23:54
  • 看起来我到现在还没有完全理解我的需要。我需要“访问”“位于谷歌驱动器下”的excel文件,然后使用xlrd库打开并读取。gspread不是实现这一点的正确方法吗? 评论 2016年6月6日15:29
  • 你说得对。那条路g扩音器与电子表格的通信是通过形成URL来请求特定单元格。这不适用于驱动器上的xls文档。不过,通过驱动器API下载副本应该很容易。 评论 2016年6月6日16:08

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.