gpt4 book ai didi

csv - 将 CSV 内容转换为 Go 接口(interface)以将它们上传到 Google 表格

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:32 25 4
gpt4 key购买 nike

我正在尝试通过他们非常糟糕的 Go API 将 CSV 文件的内容发送到 Google 表格。

BatchUpdate 采用了一个接口(interface),所以这会起作用:

values := [][]interface{}{{"one cell", "another cell"}, {"one cell in new row", "another cell in new row"}}

当我想从 CSV 发送内容时,问题就来了。我这样做了:

func prepare(filename string) [][]interface{} {

file, _ := os.Open(filename)

defer file.Close()

reader := csv.NewReader(file)
record, err := reader.ReadAll()
if err != nil {
fmt.Println("Error", err)
}

all := [][]interface{}{}

for _, value := range record {
all = append(all, []interface{}{value})
}

return all
}

而且我相信这应该给我 interface 准备好插入工作表。但是,当我稍后这样做时:

rb := &sheets.BatchUpdateValuesRequest{
ValueInputOption: "USER_ENTERED",
}
rb.Data = append(rb.Data, &sheets.ValueRange{
Range: rangeData,
Values: values, // This is the interface that I returned earlier on
})
_, err = sheetsService.Spreadsheets.Values.BatchUpdate(spreadsheetId, rb).Context(ctx).Do()

它给了我一个 googleapi: Error 400: Invalid data[0]: Invalid values[0][0]

据我了解,我正在尝试以不正确的格式传递 CSV 字段。我知道当我在 Python 中执行此操作时,我需要将其作为元组传递,以便接受数据。在 Go 中传递数据的正确方法是什么?

最佳答案

我刚刚发现我的问题是什么,追加时,我是这样做的:

all = append(all, []interface{}{value})

我应该这样做

all = append(all, []interface{}{value[0], value[1]})

这是因为 value 可以被索引,因为它里面的每一项都对应一个单元格,所以我的 CSV 专门有两个单元格。仅传递 value 是错误的格式。

关于csv - 将 CSV 内容转换为 Go 接口(interface)以将它们上传到 Google 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48730779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com