Det er IKKE trivielt at give python lov til at læse et spreadsheet. Det nemmeste er at du ser denne her film og gør præcis som han siger.
Det her virker kun for offline programmer som spyder og pycharm. Hvis du bruger Jupyter notebook skal du finde en anden film.
Bliver til :
Installer følgende biblioteker med pip
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Sørg for at din "googleapi-bruger" har redaktør rettigheder på den pågældende fil.
Find sheet-id som du kopirer ud af urlen og lægger ind i programkoden.
link til videoen uden den kan du ikke bruge nedenstående
link til googles api-side. Det er her du opretter din .json file og tillader google til at åbne op for python
API er en (Application Programming Interface) og er noget som du opretter under dette link .
Se filmen for at gøre det ordentlig. Du ender op med en nydannet email adresse som du så deler din spreadsheet med online ved at trykke på DEL. Regnearket behøves IKKE at have linkdeling slået til. Det er jo nice.
API'en genererer også en .json fil. Som skal som udgangspunkt ligge i samme mappe som din python kode, men kan selvfølgelig flyttes så skal man angive en sti i python.
Python snakker så med google ved at bruge regnearkes unikke adresse, se den blåfarvede kode. Den finder du i URL'en i googlespreadsheet
1ToxCL5HORmBBlzkmAOfntgLYz4D4LI-wfBM_SlEK4X4
Den blå kode er adressen og logininfo ligger i crpython-key.json filen. Eller hvad du nu vælger at kalde den.
Jeg har kun ændret de blå ting i googles oprindelige fil. Så er der slettet en masse.
Her til venstre kan du se hvordan det ser ud i regnearket og efter python har hentet data i en liste af lister.
Læg mærke til
from googleapiclient.discovery import build
from google.oauth2 import service_account
SERVICE_ACCOUNT_FILE = 'crpython-key.json'
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
creds = None
creds = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
SAMPLE_SPREADSHEET_ID = '1ToxCL5HORmBBlzkmAOfntgLYz4D4LI-wfBM_SlEK4X4'
service = build('sheets', 'v4', credentials=creds)
# Call the Sheets API
sheet = service.spreadsheets()
result = sheet.values().get(spreadsheetId=SAMPLE_SPREADSHEET_ID,
range="Ark1!A1:E121").execute()
values = result.get('values', [])
print(values)
Resultater bliver sådan her:
Som man kan se ovenstående er det en liste af lister.
Hvordan får man data i nogle fornunftige lister? Se på googlesheets filen længere oppe. Der er en liste med overskrifter som ikke kan blive til "float" derfor starter jeg
for i in range(1 ...)
Der er 5 kolonner a til e :-)
import matplotlib.pyplot as plt
a=[];b=[];c=[];d=[];e=[]
for i in range(1,len(values)):
linje = values[i]
a.append(float(linje[0]))
b.append(float(linje[1]))
c.append(float(linje[2]))
d.append(float(linje[3]))
e.append(float(linje[4]))
plt.plot(a,e)
Så kort som muligt. For akser og andet se plot en graf siden
Skrive til Google sheets.
Her skal der kun ændres en linje.
aoa = [["Annika",23.3],["Monika",24.3],["Jannika",26.3]]
request = sheet.values().update(spreadsheetId=mitregneark,range="Ark2!A2", valueInputOption="USER_ENTERED", body={"values":aoa}).execute()
aoa er den liste jeg skriver til googlesheets Den starter med at skrive i A2 .. man behøves ikke at angive et område.
Se screenshot nedenunder .. læg mærke til
SAMPLE_SPREADSHEET_ID = '1ToxCL5HORmBBlzkmAOfntgLYz4D4LI-wfBM_SlEK4X4'
som er den del af URLen som skal klippes ud til python.