Spielen Sie mit Google Spread Sheet mit Python (OAuth)
Umgebung
- Mac OSX(El Capitan)
- Python 2.7
Vorbereitung
Ausgabe der Google Drive API
Ein Projekt erstellen
- Wenn kein Projekt vorhanden ist, erstellen Sie ein neues Projekt aus dem Beispielabschnitt oben rechts.
- Sie können den Projektnamen und die ID festlegen
API
- Aktivieren Sie die Google Drive-API über die Google Developers Console (https://console.developers.google.com/).
- Nachdem Sie die API aktiviert haben, wählen Sie links die Anmeldeinformationen aus und wählen Sie Anmeldeinformationen erstellen-> Dienstkontoschlüssel (erstellen Sie einen, wenn Sie keinen haben).
- JSON- und P12-Format können ausgewählt werden, aber hier werden wir JSON verwenden
- Die JSON-Datei wird nach Abschluss automatisch heruntergeladen
Freigeben von Einstellungen auf der Tabellenkalkulationsseite
- Drücken Sie die Freigabetaste oben rechts in der Tabelle, die Sie verwenden möchten, und geben Sie die Adresse in das Feld "client_email" in der heruntergeladenen JSON-Datei ein
URL https: //docs.google.com/spreadsheets/d / *********** / edit
Der Stern wird zu id
Python
Bibliotheksinstallation
- oauth2client
sudo pip install --upgrade oauth2client --ignore-installed six
- gdata (Google Regular: diesmal nicht verwendet)
sudo pip install gdata --ignore-installed six
- gspread (Dieser scheint bequemer zu sein, daher werde ich ihn dieses Mal verwenden.)
sudo pip install gspread --ignore-installed six
- In El Capitan schlägt die Pip-Installation aufgrund des System Integrity Protection (SIP) fehl. Fügen Sie daher am Ende "--ignore-installed six" hinzu.
Code
- Früher wurde die Klasse "SignedJwtAssertionCredentials" verwendet, aber 2016/02 gab es ein Library Update, um "ServiceAccountCredentials" zu verwenden. wurde
import os
import gspread
from oauth2client.service_account import ServiceAccountCredentials
def main():
scope = ['https://spreadsheets.google.com/feeds']
doc_id = 'Your doc id'
path = os.path.expanduser("Path of json file")
credentials = ServiceAccountCredentials.from_json_keyfile_name(path, scope)
client = gspread.authorize(credentials)
gfile = client.open_by_key(doc_id)
worksheet = gfile.sheet1
records = worksheet.get_all_values()
for record in records:
print(record)
if __name__ == '__main__':
main()