2017-02-20 125 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