Je me demande si vous pouvez m'indiquer un exemple de lecture/écriture dans/à partir d'un document Google/d'une feuille de calcul utilisant python.
J'ai regardé l'API google docs ici https://developers.google.com/google-apps/spreadsheets/ mais je ne sais pas si j'ai cliqué sur le bon lien. Un exemple sera également d'une grande aide.
Ce que j'essaie de faire est d'interroger les feuilles de calcul en fonction des différentes colonnes, comme s'il s'agissait d'une requête SQL, puis d'analyser les données en aval et de les insérer dans une autre feuille de calcul ou un autre document sur Google Documents.
Meilleur, - Abhi
Regardez GitHub - gspread .
Je l’ai trouvé très facile à utiliser et puisque vous pouvez récupérer toute une colonne en
first_col = worksheet.col_values(1)
et toute une rangée de
second_row = worksheet.row_values(2)
vous pouvez plus ou moins construire un élément de base sélectionner ...
où ... = ...
facilement.
Je sais que ce fil est ancien maintenant, mais voici une documentation décente sur l'API Google Docs. C'était ridiculement difficile à trouver, mais utile, alors peut-être que cela vous aidera. http://pythonhosted.org/gdata/docs/api.html .
J'ai récemment utilisé gspread pour un projet afin de représenter graphiquement les données de temps des employés. Je ne sais pas dans quelle mesure cela pourrait vous aider, mais voici un lien vers le code: https://github.com/lightcastle/employee-timecards
Gspread a rendu les choses assez faciles pour moi. J'ai également pu ajouter de la logique pour vérifier diverses conditions afin de créer des résultats mensuels et annuels. Mais je viens d'importer le tableur entier et de le analyser à partir de là, donc je ne suis pas sûr à 100% que c'est exactement ce que vous recherchez. Bonne chance.
Jetez un coup d'œil au port gspread pour api v4 - pygsheets . Il devrait être très facile à utiliser plutôt que le client Google.
Exemple
import pygsheets
gc = pygsheets.authorize()
# Open spreadsheet and then workseet
sh = gc.open('my new ssheet')
wks = sh.sheet1
# Update a cell with value (just to let him know values is updated ;) )
wks.update_cell('A1', "Hey yank this numpy array")
# update the sheet with array
wks.update_cells('A2', my_nparray.to_list())
# share the sheet with your friend
sh.share("[email protected]")
Voir les docs ici .
Auteur ici.
La dernière version de Google Api Docs explique comment écrire sur une feuille de calcul avec Python, mais il est un peu difficile de naviguer. Voici un lien vers un exemple montrant comment ajouter .
Le code suivant est ma première tentative réussie d’ajout à une feuille de calcul Google.
import httplib2
import os
from apiclient import discovery
import oauth2client
from oauth2client import client
from oauth2client import tools
try:
import argparse
flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
flags = None
# If modifying these scopes, delete your previously saved credentials
# at ~/.credentials/sheets.googleapis.com-python-quickstart.json
SCOPES = 'https://www.googleapis.com/auth/spreadsheets'
CLIENT_SECRET_FILE = 'client_secret.json'
APPLICATION_NAME = 'Google Sheets API Python Quickstart'
def get_credentials():
"""Gets valid user credentials from storage.
If nothing has been stored, or if the stored credentials are invalid,
the OAuth2 flow is completed to obtain the new credentials.
Returns:
Credentials, the obtained credential.
"""
home_dir = os.path.expanduser('~')
credential_dir = os.path.join(home_dir, '.credentials')
if not os.path.exists(credential_dir):
os.makedirs(credential_dir)
credential_path = os.path.join(credential_dir,
'mail_to_g_app.json')
store = oauth2client.file.Storage(credential_path)
credentials = store.get()
if not credentials or credentials.invalid:
flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
flow.user_agent = APPLICATION_NAME
if flags:
credentials = tools.run_flow(flow, store, flags)
else: # Needed only for compatibility with Python 2.6
credentials = tools.run(flow, store)
print('Storing credentials to ' + credential_path)
return credentials
def add_todo():
credentials = get_credentials()
http = credentials.authorize(httplib2.Http())
discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
'version=v4')
service = discovery.build('sheets', 'v4', http=http,
discoveryServiceUrl=discoveryUrl)
spreadsheetId = 'PUT YOUR SPREADSHEET ID HERE'
rangeName = 'A1:A'
# https://developers.google.com/sheets/guides/values#appending_values
values = {'values':[['Hello Saturn',],]}
result = service.spreadsheets().values().append(
spreadsheetId=spreadsheetId, range=rangeName,
valueInputOption='RAW',
body=values).execute()
if __== '__main__':
add_todo()
Vous pouvez jeter un oeil à Sheetfu . Voici un exemple tiré du fichier README. Il offre une syntaxe extrêmement facile pour interagir avec des feuilles de calcul comme s'il s'agissait d'une table de base de données.
from sheetfu import Table
spreadsheet = SpreadsheetApp('path/to/secret.json').open_by_id('<insert spreadsheet id here>')
data_range = spreadsheet.get_sheet_by_name('people').get_data_range()
table = Table(data_range, backgrounds=True)
for item in table:
if item.get_field_value('name') == 'foo':
item.set_field_value('surname', 'bar') # this set the surname field value
age = item.get_field_value('age')
item.set_field_value('age', age + 1)
item.set_field_background('age', '#ff0000') # this set the field 'age' to red color
# Every set functions are batched for speed performance.
# To send the batch update of every set requests you made,
# you need to commit the table object as follow.
table.commit()
Disclaimer: Je suis l'auteur de cette bibliothèque.
Ce fil semble être assez vieux. Si quelqu'un cherche toujours, les étapes mentionnées ici: https://github.com/burnash/gspread fonctionnent très bien.
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import os
os.chdir(r'your_path')
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
gc = gspread.authorize(creds)
wks = gc.open("Trial_Sheet").sheet1
wks.update_acell('H3', "I'm here!")
Assurez-vous de déposer votre fichier json d'informations d'identification dans votre répertoire actuel. Renommez-le en tant que client_secret.json.
Vous risquez de rencontrer des erreurs si vous n'activez pas l'API Google Sheet avec vos informations d'identification actuelles.