我必须粘贴一个日期。据我在文档和 SO 中的理解,我必须粘贴从 1899 年 12 月 30 日起过去的天数,并将单元格格式设置为日期。
最近一小时正在寻找使用 Go API 客户端进行格式化的示例。有什么例子吗?
谢谢!
编辑:我的代码!
Google libs used:
"google.golang.org/api/option"
"google.golang.org/api/sheets/v4"
功能:
func googleAppend(bookID, sheet, tableCorner string, data []interface{}) {
srv := connect(key)
var vr sheets.ValueRange
vr.Values = append(vr.Values, data)
_, err := srv.Spreadsheets.Values.Append(bookID,
sheet+"!"+tableCorner, &vr).ValueInputOption("RAW").Do()
if err != nil {
log.Fatalf("Unable to retrieve data from sheet. %v", err)
}
}
测试使用:
func Test_googleAppend(t *testing.T) {
sample := []interface{}{"swwewewew", 3, 47120} <-- for what I understand, the destination of 3434343 should be formated to DATE.
googleAppend("XXX", "SHEET", "A1", sample)
}
最佳答案
我相信您的目标如下。
- 您想要设置“C”列单元格的数字格式。
- 例如,您想要将
47120
转换为1/2/2029
。 - 您希望使用 Golang 的 googleapis 来实现此目的。
- 您已经能够使用 Sheets API 获取和输入值。
修改点:
- 为了更改单元格格式,需要使用Sheets API中的batchUpdate方法。对于您的情况,我想建议在batchUpdate方法中使用RepeatCellRequest更改数字格式。
当这反射(reflect)到您的脚本中时,请按如下方式进行修改。
修改后的脚本:
运行脚本之前,请设置sheetId
。
func googleAppend(bookID, sheet, tableCorner string, data []interface{}) {
srv := connect(key)
var vr sheets.ValueRange
vr.Values = append(vr.Values, data)
_, err := srv.Spreadsheets.Values.Append(bookID,
sheet+"!"+tableCorner, &vr).ValueInputOption("RAW").Do()
if err != nil {
log.Fatalf("Unable to retrieve data from sheet. %v", err)
}
// I added below script.
sheetId := 12345678 // Please set the sheet ID which is not Spreadsheet ID. Please be careful this.
repeatCellRequest := &sheets.RepeatCellRequest{
Fields: "userEnteredFormat.numberFormat",
Range: &sheets.GridRange{
SheetId: int64(sheetId),
StartRowIndex: 0,
StartColumnIndex: 2,
EndColumnIndex: 3,
},
Cell: &sheets.CellData{
UserEnteredFormat: &sheets.CellFormat{
NumberFormat: &sheets.NumberFormat{
Pattern: "m/d/yyyy",
Type: "DATE",
},
},
},
}
requestBody := &sheets.BatchUpdateSpreadsheetRequest{
Requests: []*sheets.Request{&sheets.Request{
RepeatCell: repeatCellRequest,
}},
}
resp, err := srv.Spreadsheets.BatchUpdate(bookID, requestBody).Do()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%#v\n", resp)
}
- 在此修改中,使用脚本将值放入电子表格后,“C”列的单元格格式将使用batchUpdate 方法中的 RepeatCellRequest 进行更改。
注意:
- 在这种情况下,当您运行一次更改数字格式的脚本时,可能不需要再次运行。因为当脚本运行时,“C”列的数字格式发生了变化。但我不确定你的实际情况。因此,请根据您的实际情况修改脚本。
引用文献:
关于go - 如何使用 Google Sheets API v4 和 Go 设置单元格格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62964170/