2016-08-24 51 views
1

我想在Python2.7中使用Gspread来检索电子表格。我似乎能够登录,但每当我发出命令Gspread - 无法检索电子表格

gc.openall() 

它只是返回一个空的列表。我已经给服务帐户管理员访问了所有内容,并且在我的Google控制台中启用了工作表API。任何人都可以指出我做错了什么?

下面是我的name-hash.json文件由谷歌返回,用于登录:

{ 
    "type": "service_account", 
    "project_id": "name-id", 
    "private_key_id": "PRIVATE KEY ID", 
    "private_key": "-----BEGIN PRIVATE KEY----- 
    ... 
    \n-----END PRIVATE KEY-----\n", 
    "client_email": "[email protected]", 
    "client_id": "CLIENTID", 
    "auth_uri": "https://accounts.google.com/o/oauth2/auth", 
    "token_uri": "https://accounts.google.com/o/oauth2/token", 
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 
    "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/test-279%40name-id.iam.gserviceaccount.com" 
} 

我的代码如下:

import gspread 
from oauth2client.service_account import ServiceAccountCredentials 

def login(json_key): 
    scope = ['https://spreadsheets.google.com/feeds'] 
    credentials = ServiceAccountCredentials.from_json_keyfile_name(json_key, scope) 
    gc = gspread.authorize(credentials) 
    return gc 

gc = login('/Users/username/Downloads/name-hash.json') 
files = gc.openall() 
print(files) 
    [] 
+1

表单位于您的谷歌驱动器的根目录?它必须用于扩展工作。我们用代码重写了我们的gspread,直接使用最新的v4 google api。我强烈推荐它。它有一个相当陡峭的学习曲线,但非常值得! – Sebastien

+0

我的猜测是,你错过了分享电子表格本身的地址:[email protected] 如果你尝试open_by_key与一个特定的电子表格,你会得到一个错误消息,如果是这种情况 – Sebastien

回答

1

我能想到的主要是2个问题,可能是在这里打球。首先,gspread只能访问位于谷歌驱动器根目录的谷歌表格。为了规避这种情况,我强烈建议移动到v4谷歌api python客户端而不是gspread。

如果你有根谷歌张我的猜测是,你缺少的地址共享电子表格本身:[email protected]

为了验证这一点,我会建议用open_by_key替换openall并提供一个特定的Google工作表ID来帮助调试。

+0

你是对,问题是我必须与[email protected]分享表。谢谢! – user2694306

+0

我的荣幸:)不久前我与那个图书馆斗争过,我绝对与痛苦有关:) – Sebastien

相关问题