Ich versuche Google's Gdata Python-API zu lernen und versuche, ersten Zugang zu einer Test-Tabelle in meinem Laufwerk zu bekommen. heres der Code, den ich als Test bin mit:Zugriff auf Google-Tabellenkalkulation nicht möglich
from oauth2client.service_account import ServiceAccountCredentials
import gdata.spreadsheets.client
# 認証に必要な情報
client_email = "[email protected]" # 手順2で発行されたメールアドレス
with open("C:\Users\User2\Downloads\My Project-e7c4abb055f3.p12") as f: private_key = f.read() # 手順2で発行された秘密鍵
# 認証情報の作成
scope = ["https://spreadsheets.google.com/feeds"]
credentials = ServiceAccountCredentials(client_email, private_key,
scope=scope)
# スプレッドシート用クライアントの準備
client = gdata.spreadsheets.client.SpreadsheetsClient()
# OAuth2.0での認証設定
auth_token = gdata.gauth.OAuth2TokenFromCredentials(credentials)
auth_token.authorize(client)
# ---- これでライブラリを利用してスプレッドシートにアクセスできる ---- #
# ワークシートの取得
sheets = client.get_worksheets("1RRajoMlKP2plSnE12dt_BqVbk9TihCpDpumvhF-y7vM") # スプレッドシートIDを指定
for sheet in sheets.entry:
print sheet.get_worksheet_id(), sheet.title
Ich bin stützen sie weg von diesem Tutorial http://qiita.com/koyopro/items/d8d56f69f863f07e9378 (sorry es ist alles in Japanisch).
Die Methode, die dieser Typ vorschlägt, verwendet etwas namens p12 als Schlüssel (?), Um beim Erstellen von OAuth2-Anmeldeinformationen auf Dinge in Google Apps zuzugreifen. Dann teilen Sie Ihr Tabellenblatt an eine @Developer E-Mail-Adresse generiert.
ich diesen Code ausführen und es ist in Ordnung, bis er
trifftsheets = client.get_worksheets("1RRajoMlKP2plSnE12dt_BqVbk9TihCpDpumvhF-y7vM") # スプレッドシートIDを指定
Und das gibt mir die folgenden Fehler:
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>>
========= RESTART: C:\Users\User2\Documents\googlePythonTest04_01.py =========
Traceback (most recent call last):
File "C:\Users\User2\Documents\googlePythonTest04_01.py", line 24, in <module>
sheets = client.get_worksheets("1RRajoMlKP2plSnE12dt_BqVbk9TihCpDpumvhF-y7vM") # スプレッドシートIDを指定
File "C:\Python27\lib\site-packages\gdata\spreadsheets\client.py", line 108, in get_worksheets
**kwargs)
File "C:\Python27\lib\site-packages\gdata\client.py", line 640, in get_feed
**kwargs)
File "C:\Python27\lib\site-packages\gdata\client.py", line 267, in request
uri=uri, auth_token=auth_token, http_request=http_request, **kwargs)
File "C:\Python27\lib\site-packages\atom\client.py", line 122, in request
return self.http_client.request(http_request)
File "C:\Python27\lib\site-packages\gdata\gauth.py", line 1332, in new_request
refresh_response = self._refresh(request_orig)
File "C:\Python27\lib\site-packages\gdata\gauth.py", line 1473, in _refresh
self.credentials._refresh(httplib2.Http().request)
File "C:\Python27\lib\site-packages\oauth2client-2.2.0-py2.7.egg\oauth2client\client.py", line 873, in _refresh
self._do_refresh_request(http_request)
File "C:\Python27\lib\site-packages\oauth2client-2.2.0-py2.7.egg\oauth2client\client.py", line 900, in _do_refresh_request
body = self._generate_refresh_request_body()
File "C:\Python27\lib\site-packages\oauth2client-2.2.0-py2.7.egg\oauth2client\client.py", line 1611, in _generate_refresh_request_body
assertion = self._generate_assertion()
File "C:\Python27\lib\site-packages\oauth2client-2.2.0-py2.7.egg\oauth2client\service_account.py", line 396, in _generate_assertion
key_id=self._private_key_id)
File "C:\Python27\lib\site-packages\oauth2client-2.2.0-py2.7.egg\oauth2client\crypt.py", line 97, in make_signed_jwt
signature = signer.sign(signing_input)
AttributeError: 'str' object has no attribute 'sign'
>>>
Nach diesem Tutorial, das letzte sollte Druckbefehl zurückgeben
od6 <ns0:title xmlns:ns0="http://www.w3.org/2005/Atom">シート1</ns0:title>0
Aber es gibt mir diesen String/Zeichen Fehler.
Mache ich etwas falsch? Oder hat sich die API bei diesem Befehl get_worksheets geändert? Ich kenne eine Menge Dinge geändert haben könnte, da dieses Tutorial geschrieben wurde, da ich den „Import SignedJwtAssertionCredentials“ auf „Import ServiceAccountCredentials“ zu ändern, hatte offenbar weil SignedJwtAssertionCredentials nicht mehr existiert (nach diesem Thread: https://github.com/google/oauth2client/issues/401)
Ich weiß, ich könnte diese andere viel einfachere "gspread" API verwenden, aber mein Verständnis ist, dass Sie nicht wirklich eine Tabelle damit bearbeiten können, also gehe ich gerade mit gdata.
Vielen Dank im Voraus.
Stopp, um die gdata API. Verwenden Sie Google Tabellen v4, Sie werden viel mehr Glück haben https://developers.google.com/sheets/ Ich werde bereit sein zu wetten v3 wird bald abgeschrieben werden, was bedeutet, in einem Jahr müssen Sie sowieso migrieren. – DaImTo
Ich verstehe nicht, ich dachte, dass Google Tabellen v4 Teil von gdata ist? Wie benutze ich dann v4? – user3696118
V3 ist gdata v4 ist ein Discovery-Service-API. – DaImTo