Jouez avec Google Spread Sheet avec Python (OAuth)
environnement
- Mac OSX(El Capitan)
- Python 2.7
Préparation
Émission de l'API Google Drive
Créer un projet
- S'il n'y a pas de projet, créez un nouveau projet à partir de la section d'exemple en haut à droite.
- Vous pouvez décider du nom et de l'ID du projet
API
- Activez l'API Google Drive à partir de la Google Developers Console (https://console.developers.google.com/)
- Après avoir activé l'API, sélectionnez les informations d'identification sur la gauche et sélectionnez Créer des informations d'identification-> Clé de compte de service (créez-en une si vous n'en avez pas)
- Les formats JSON et P12 peuvent être sélectionnés, mais ici nous utiliserons JSON
- Le fichier JSON sera téléchargé automatiquement une fois terminé
Paramètres de partage côté feuille de calcul
- Appuyez sur le bouton de partage en haut à droite de la feuille de calcul que vous souhaitez utiliser et entrez l'adresse dans le champ
client_email
du fichier JSON téléchargé
url https: //docs.google.com/spreadsheets/d / *********** / edit
La partie astérisque devient id
Python
Installation de la bibliothèque
- oauth2client
sudo pip install --upgrade oauth2client --ignore-installed six
- gdata (google regular: non utilisé cette fois)
sudo pip install gdata --ignore-installed six
- gspread (Celui-ci semble être plus pratique, je vais donc utiliser celui-ci cette fois)
sudo pip install gspread --ignore-installed six
- Dans El Capitan, l'installation de pip échoue en raison de la protection de l'intégrité du système (SIP), alors ajoutez
--ignore-installed six
à la fin.
Code
- Auparavant, la classe
SignedJwtAssertionCredentials
était utilisée, mais en 2016/02, il existe Library Update pour utiliser ServiceAccountCredentials
. devenu
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()