作为开发人员,我使用以下endpoint:https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/batchUpdate
并要求:https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#AppendCellsRequest插入具有值的新行。
我有一些列格式样式的电子表格:背景色/字体重量/文本换行/数据验证。
问题是,当我使用这样的请求时:
curl --request POST \
'https://sheets.googleapis.com/v4/spreadsheets/1SoDx8YRyiKF9vKfa_2w0xc7DTNIlQoLC6hBq1SCJEJY:batchUpdate?key=[YOUR_API_KEY]' \
--header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"requests":[{"appendCells":{"sheetId":0,"fields":"*","rows":[{"values":[{"userEnteredValue":{"stringValue":"TEST STRING VALUE long"}},{"userEnteredValue":{"stringValue":"TEST TEXT LONG"}}]}]}}]}' \
--compressed
我看到文本换行和数据验证样式被忽略:
这里的关键点我只使用:'userEnteredValue'字段来提供值。
根据该文件:https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells#CellData我可以使用“userEnteredFormat”/“dataValidation”,但“在编写时,新格式将与现有格式合并。”我发现再次获取和发布这些样式格式相当复杂。
我的问题-有没有办法使用AppendCellsRequest尽可能简单地发布CellData并保留现有的列样式?
塔奈克的回答是正确的,但我发现以下奇怪之处。
我的CellData
看起来像(Kotlin):
fun cellDataDouble(value: Double, doublePattern: String = "#.#"): CellData {
return CellData().also { cd ->
cd.userEnteredFormat = CellFormat().setNumberFormat(NumberFormat().also { nf ->
nf.type = "Number"
nf.pattern = doublePattern
})
cd.userEnteredValue = ExtendedValue().setNumberValue(value)
}
}
第20行附加了指定的两个字段,第21行只附加了userEnteredValue
,这表明未应用userEnteredFormat
。文档建议应该合并格式,但是很明显,只需指定数字格式,字体和粗体格式就会被删除。
在本例中,您使用“字段”:“*”
,而只设置用户输入值的属性。在这种情况下,也会设置除
userEnteredValue
之外的属性。我想这就是你的问题所在。
为了避免此问题,请使用
userEnteredValue
到字段
。
当您的请求主体被修改时,它变成如下所示。
--data '{"requests":[{"appendCells":{"sheetId":0,"fields":"*","rows":[{"values":[{"userEnteredValue":{"stringValue":"TEST STRING VALUE long"}},{"userEnteredValue":{"stringValue":"TEST TEXT LONG"}}]}]}}]}'
--data '{"requests":[{"appendCells":{"sheetId":0,"fields":"userEnteredValue","rows":[{"values":[{"userEnteredValue":{"stringValue":"TEST STRING VALUE long"}},{"userEnteredValue":{"stringValue":"TEST TEXT LONG"}}]}]}}]}'
“字段”:“*”
已修改为“字段”:“userEnteredValue”
方法:spreadsheets.batch更新
- AppendCellsRequest
我希望用同一行中其他列的相关值更新列。我正在更新的列是唯一的,如果执行此操作,我有时会出现重复的键错误。我希望忽略这些错误,只更新其中一条记录,忽略其他记录。 我的查询如下所示: 现在,在Fname和Lname两行匹配的情况下,我只希望更新第一个记录Coolname。 谢谢(MS SQL Server)
我的例子如下: Person是一个简单的实体,有3个字段“Long id、String name、intger age”,并且映射到相应的Person表,上面有3列) 有没有办法通过使用@Query 重要的 请帮帮忙。
忽略列表显示不需要处理的资源或一类规则建议。 忽略列表显示不需要处理的资源或一类规则建议。当某资源或某类型的建议不需要用户处理时,可以通过忽略或忽略该类建议功能将其显示在忽略列表。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “优化建议/安全检查/忽略列表” 菜单项,进入忽略列表页面。 恢复 当忽略列表中某资源或某规则建议需要用户关注处理时,可以使用恢复功能将其显示在建议列表。
忽略列表显示不需要处理的资源或一类规则建议。 忽略列表显示不需要处理的资源或一类规则建议。当某资源或某类型的建议不需要用户处理时,可以通过忽略或忽略该类建议功能将其显示在忽略列表。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “优化建议/成本优化/忽略列表” 菜单项,进入忽略列表页面。 恢复 当忽略列表中某资源或某规则建议需要用户关注处理时,可以使用恢复功能将其显示在建议列表。
我使用的是Spring r2dbc和ReactiveCrudRepository,我有一个在生成更新查询时需要忽略的字段 如何在更新查询中忽略companyName。我可以在使用@列的插入查询中忽略它,但它不适用于更新