尝试使用UpdateCellsRequest来更新一系列单元格的格式,但它只更新该范围内的第一个单元格。
let fixFormats = () => {
return new Promise((resolve, reject) => {
var sheets = google.sheets('v4');
var options = {
auth: auth,
spreadsheetId: spreadsheetId,
resource: {
requests: [{
updateCells: {
range: {
sheetId: 0,
startColumnIndex: 0,
endColumnIndex: 2,
},
rows: [{
values: {
userEnteredFormat: {
numberFormat: {
type: "CURRENCY",
pattern: "$#,##0.00"
}
}
}
}],
fields: "userEnteredFormat.numberFormat",
}
}]
}
}
sheets.spreadsheets.batchUpdate(options, (err, res) => {
if (err) {
reject(err);
} else {
resolve(res);
console.log(res);
}
});
});
}
根据this post,它应该是可能的。我已浏览参考文档并验证我的请求格式正确。特别注意range的定义方式。
编辑:来自startColumnIndex(包括)和endColumnIndex(独家)的更令人困惑的行为..
虽然sheetId:0,startColumnIndex:0,endColumnIndex:2 仅更新单元格A1,例如... 虽然sheetId:0,startColumnIndex:0,endColumnIndex:3 是一样的。
但是......如果在sheetId:0,startColumnIndex:1,endColumnIndex:2 然后只更新B列(colIndex:1)......
这是一个错误还是我错过了什么?
编辑:按请求输出...但不确定这会显示正确的响应。
{ spreadsheetId: '<mysheet>',
replies: [ {} ],
updatedSpreadsheet:
{ spreadsheetId: '<mysheet>',
properties:
{ title: 'OLR',
locale: 'en_US',
autoRecalc: 'ON_CHANGE',
timeZone: 'America/Los_Angeles',
defaultFormat: [Object] },
sheets: [ [Object], [Object], [Object], [Object], [Object], [Object] ],
namedRanges: [ [Object] ],
spreadsheetUrl: 'https://docs.google.com/a/company.com/spreadsheets/d/<mysheet>/edit' } }
如果我JSON.stringify响应它给它的范围内的每个单元格格式化,这是很多单元格。但是,在选择的3列中,第一列中的第一个单元格已更新,但其余单元格保持不变。
答案 0 :(得分:1)
想出来!虽然我能够通过使用&#39; repeatCells&#39;来实现这一点。函数而不是“更新细胞”,我不确定为什么它不起作用,因为它似乎是该函数的预期目的。我将不得不再次阅读这篇文章,但为后人提供了有效的更新代码:
var options = {
auth: auth,
spreadsheetId: spreadsheetId,
resource: {
requests: [{
repeatCell: {
fields: "userEnteredFormat.numberFormat",
range: {
sheetId: 1564685276,
startColumnIndex: 1, // inclusive
endColumnIndex: 3, // exclusive
},
cell: {
userEnteredFormat: {
numberFormat: {
type: "CURRENCY",
pattern: "$#,##0.00"
}
}
}
}
}],
}
}
答案 1 :(得分:0)
在传递给options
的{{1}}有效负载中,sheets.spreadsheets.batchUpdate()
-更具体地说,resources.requests[].updateCells.rows[].values[]
字段实际上应该是一个数组。您将其作为示例中的哈希。
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/sheets#RowData