2017-02-20 5 views
0

Ich arbeite mit http://pygsheets.readthedocs.io/en/latest/index.html ein Wrapper um die Google Sheets API v4.Wie lade ich ein Arbeitsblatt mit pygsheets

Ich habe ein kleines Skript, in dem ich versuche, ein JSON-Blatt zu wählen, um es in ein Google Sheets-Arbeitsblatt zu laden. Der Dateiname setzt sich zusammen aus der gemacht:

spreadsheetname_year_month_xxx.json 

Der Code:

import tkinter as tk 
import tkFileDialog 
import pygsheets 


root = tk.Tk() 
root.withdraw() 
file_path = tkFileDialog.askopenfilename() 
print file_path 
file_name = file_path.split('/')[-1] 
print file_name 
file_name_segments = file_name.split('_') 
spreadsheet = file_name_segments[0] 
worksheet = file_name_segments[1]+'_'+file_name_segments[2] 

gc = pygsheets.authorize(outh_file='client_secret_xxxxxx.apps.googleusercontent.com.json') 

ssheet = gc.open(spreadsheet) 
ws = ssheet.add_worksheet(worksheet(ssheet,str(raw_input(file_path)))) 

Der Dateipfad führt zu einer dynamisch erzeugten JSON-Datei, die wie folgt aussieht:

{ 
    "count": 12, 
    "results": [ 
    { 
     "case": "abc1", 
     "case_name": "invalid", 
     "case_type": "invalid", 

    }, 
    { 
     "case": "abc2", 
     "case_name": "invalid", 
     "case_type": "invalid", 
     }, 
............ 

Ich erhalte:

File "upload_to_google_sheets.py", line 27, in <module> 
ws = ssheet.add_worksheet(worksheet(ssheet,str(raw_input(file_path)))) 
TypeError: 'unicode' object is not callable 

Wie Sie können Ich versuche, ein Arbeitsblatt mit den JSON-Daten zu instanziieren. Was mache ich falsch?

+0

Sind Sie sicher, dass Sie es richtig machen? Da der jsonSheet-Parameter die Eigenschaften des Arbeitsblattblattes enthält, sollte er das Format https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#Sheet haben. Versuchen Sie, das Blatt mit den Werten im json-Dokument zu aktualisieren? – nithin

Antwort

1

Der Parameter JsonSheet ist nicht für die Werte des Arbeitsblatts, sondern für die Angabe der Eigenschaften des Arbeitsblatts, daher sollte er das Format this haben.

Da die direkte Umwandlung eines JSON in eine Tabellenkalkulation nicht eindeutig ist, müssen Sie es zuerst in ein numpy Array (Matrix) oder einen Pandas DataFrame konvertieren. Dann können Sie set_as_df von nur update_values für die Aktualisierung der Tabelle verwenden.

+0

Vielen Dank für die schnelle Antwort. Ich habe das Pygsblets-Tag wie gewünscht erstellt. Ich schätze deine Arbeit hier sehr. Ich werde numpy Arrays und Pandas dfs untersuchen. Wenn ich nachfragen kann: Ich habe viele CSVs, die ich gerne hochladen würde. Was wäre Ihre empfohlene Vorgehensweise bei der Verwendung Ihrer Bibliothek? – user61629

+0

von numpy array bedeutete ich nur eine Liste von Listen. Über CSV können Sie einfach das CSV-Modul und lesen Sie die CSV als Matrix (Liste der Listen), und verwenden Sie die update_cells. Oder Sie können die Pandas read_csv zum Lesen von csv und set_as_df verwenden. Ich würde empfehlen, das csv-Modul zu verwenden, da es möglicherweise etwas schneller ist und die Pandas-Unterstützung möglicherweise entfernt wird, da es die Importzeit stark erhöht. – nithin

+0

Danke. Ich muss es verpasst haben, aber wo ist das csv-Modul in Pygsheets? – user61629

Verwandte Themen