Förutom att Google Spreadsheets är ett grymt bra kalkylprogram går det även att styra det med hjälp av ett API. Här är ett exempel på hur det går till.
I följande exempel uppdaterar vi en telefonlista med telefonnummer genom att ange namn. Skriptet letar efter första raden som har värdet från parametern –lookup i kolumnen ”namn”. Kolumnen ”tel” uppdateras då med värdet från parametern –newdata.
Om man ska göra många uppdateringar kan det vara en bra idé att göra allt inne i Python så man behåller samma session mot Google. Jag har märkt att man råkar ut för deras Captcha om man kör något hundratal inloggningar med kort mellanrum.
Kolumnnamn ska alltid anges med små bokstäver. Dokumentnamn och kalkylbladsnamn spelar däremot ingen roll.
#!/usr/bin/python import gdata.spreadsheet.text_db import sys import getopt __lookupCol__ = 'namn' __dataCol__ = 'tel' __username__ = '[email protected]' __password__ = 'secret' __document__ = 'Adressboken' __worksht__ = 'Telefonlista' opts, args = getopt.getopt(sys.argv[1:], "", ["lookup=", "newdata="]) lookup = '' newdata = '' for o, a in opts: if o == "--lookup": lookup = a elif o == "--newdata": newdata = a if lookup == '' or newdata == '': print '--lookup [lookupdata] --newdata [newdata] ' sys.exit(2) client = gdata.spreadsheet.text_db.DatabaseClient(username = __username__, password = __password__) databases = client.GetDatabases(name = __document__) database = databases[0] tables = database.GetTables(name = __worksht__) table = tables[0] result = table.FindRecords(__lookupCol__ + '="' + lookup + '"') record=result[0] print "Old value: ",record.entry.custom[__dataCol__].text record.ExtractContentFromEntry(record.entry) record.content[__dataCol__] = newdata record.Push() print "New value: " + record.entry.custom[__dataCol__].text