2017-02-20 123 views
0

我正在與http://pygsheets.readthedocs.io/en/latest/index.html圍繞谷歌工作表api v4封裝。如何使用pygsheets上傳工作表

我有一個小腳本,我試圖選擇一個json工作表上傳到Google工作表。文件名是由在:

spreadsheetname_year_month_xxx.json 

代碼:

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)))) 

文件路徑導致生成的JSON文件看起來像:

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

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

我得到:

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 

正如你可以看到我試圖用json數據實例化工作表。我究竟做錯了什麼?

+0

你確定你做對了嗎?因爲jsonSheet參數包含工作表工作表的屬性,因此應採用此格式https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#Sheet。你是否試圖用json文檔中的值更新工作表? – nithin

回答

1

參數JsonSheet不適用於工作表的值,它用於指定工作表的屬性,因此應該是this格式。

由於直接將json轉換爲電子表格相當模糊,因此您需要首先將其轉換爲numpy數組(矩陣)或熊貓DataFrame。然後,您可以使用set_as_dfupdate_values更新電子表格。

+0

謝謝你的快速回答。我已經按照你的要求創建了pygsheets標籤。我非常感謝你在這裏的工作。我將調查numpy數組和熊貓dfs。如果我可以問一個後續問題:我有很多我想上傳的CSV,使用你的圖書館推薦的方法是什麼? – user61629

+0

由numpy數組我的意思只是列表的列表。關於csv,你可以使用csv模塊並讀取csv作爲矩陣(列表列表),並使用update_cells。或者,您可以使用pandas read_csv閱讀csv和set_as_df。我建議使用csv模塊,因爲它可能會更快一點,熊貓支持可能會被刪除,因爲它大大增加了導入時間。 – nithin

+0

謝謝。我一定錯過了,但pygsheets中的csv模塊在哪裏? – user61629