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()
row = str(len(workSheet1.get_all_values()) + 1)
workSheet1.batch_update([
{"range": "A" + row,"values": [[r[0]] for r in my_csv_values]},
{"range": "S" + row,"values": [r[1:] for r in my_csv_values]},
],value_input_option="USER_ENTERED")
workSheet1.batch_update("AF","=SUM(S:AE)")
csv_to_sheets()
在这里,我尝试将csv中的数据从'S'列添加到'AE'列,这是正确的。然后我尝试应用'AF'列中的公式,但它抛出了一个错误:gspread.异常. API错误:{“代码”:400,“消息”:'数据[0]处的值无效。值'(类型。googleapis.com/google.protobuf.ListValue),“=SUM(S:AE)”'
即使我在update方法中只给予了2个参数,它仍然说给出了3个。
这是谷歌工作表,我想在其中使用这个公式,但从第17行的前16行是预先填写。
请帮忙。先谢谢你了。
1条答案
按热度按时间vlju58qv1#
我相信你的目标如下。
=SUM(S:AE)
放置到单元格“AF17”中。看到你的脚本,我以为
workSheet1.batch_update("AF","=SUM(S:AE)")
需要修改,那么下面的修改怎么样?发件人:
收件人:
注:
my_csv_values
时,下面的修改怎么样?参考: