2017-02-20 14 views
0

Я работаю с http://pygsheets.readthedocs.io/en/latest/index.html оберткой по страницам google 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 (matrix) или pandas DataFrame. Затем вы можете использовать set_as_df только update_values для обновления таблицы.

+0

Благодарим вас за быстрый ответ. Я создал тэг pygsheets по вашему запросу. Я очень ценю вашу работу здесь. Я буду исследовать массивы numpy и pandas dfs. Если я могу спросить о последующих действиях: у меня есть много CSV, которые я бы хотел загрузить, каков будет ваш рекомендуемый подход с использованием вашей библиотеки? – user61629

+0

by numpy array Я имел в виду только список списков. О csv вы можете просто использовать модуль csv и прочитать csv как матрицу (список списков) и использовать update_cells. Или вы можете использовать pandas read_csv для чтения csv и set_as_df. Я бы рекомендовал использовать модуль csv, поскольку он может быть немного быстрее, и поддержка pandas может быть удалена, поскольку она значительно увеличивает время импорта. – nithin

+0

Спасибо. Я, должно быть, пропустил это, но где же модуль csv в pygsheets? – user61629