import pandas as pd
import pygsheets
import gspread
from gspread_dataframe import set_with_dataframe
from google.oauth2.service_account import Credentials
def csv_to_sheets():
tokenPath ='path for service account file.json'
scopes = ['https://www.googleapis.com/auth/spreadsheets',
'https://www.googleapis.com/auth/drive']
credentials = Credentials.from_service_account_file(tokenPath, scopes=scopes)
gc = gspread.authorize(credentials)
gs = gc.open('csv_to_gSheet')
workSheet1 = gs.worksheet('sheet1')
my_csv = pd.read_csv("my csv file path")
my_csv_values = my_csv.values.tolist()
for ele in my_csv_values:
workSheet1.update("A" + str(len(workSheet1.get_all_values()) + 1), ele[0], value_input_option="USER_ENTERED")
workSheet1.update("S" + str(len(workSheet1.get_all_values()) + 1), ele[1:], value_input_option="USER_ENTERED")`
csv_to_sheets()
我有一个csv,其中有一个日期列和其余的数据列。我想把这个csv附加到谷歌工作表这样的方式,我的日期列得到附加到列'A'的谷歌工作表和其余数据得到附加从列'S'和之间没有。如果我尝试按照上述方法,我得到一个巨大的错误,而附加我的数据列(最后一行)说:gspread.异常. API错误:{“代码”:400,“消息”:“”数据.值[0]“处的值无效(类型. googleapis.com/google.protobuf.ListValue)
我该怎么做才能一起做,请帮忙,提前谢谢。
这是第一行作为标题的输入csv。
这就是我如何需要我的输出在谷歌工作表。日期应该在第一列和其余的数据应该附加从列“S”。
输入如图1所示。图3显示了google工作表中的输出。工作表中已经存在直到第16行的数据。我们需要追加从第17行开始的数据。当我们使用修改并第一次运行脚本时,这些值正确地附加在“A”列和除“S”列以外的其余列中。(检查第17行到第23行的“S”列)。但是,当我第二次运行相同的修改脚本时,值不仅正确地附加在“S”列中,而且也正确地附加在其他列中。(检查第24行到第27行的“S”列)
因此,我想了解为什么我在第17行到第23行的“S”列中获得了这些值,而这些值甚至没有出现在我的输入中,我应该做些什么才能在第24行到第27行中获得正确的值。
1条答案
按热度按时间z31licg01#
修改点:
for ele in my_csv_values:
的情况下,上载每行,并且每个循环使用3个API调用。ele[0]
不是数组,而ele[1:]
是一维数组,在这种情况下,会出现一个错误,我想这可能就是您当前错误信息的原因。当这些要点反映在你的脚本中时,下面的修改怎么样?
发件人:
收件人: