Google 工作表 api 附加多个带格式的值
Google sheets api append multiple values with formatting
我有一个值数组,我想通过 API 插入到 google sheet,我需要根据单元格的内容为某些单元格设置颜色格式如下图所示的单元格:
我可以使用追加来插入值,但我没有找到任何格式化追加请求的示例。
let values = [["Department", "Product", "Cost", "Status"],
["Clothes", "Socks", "12" "On Stock"],
["Clothes", "Hat", "15.99", "Out of stock"],
["Fresh","Apple", "18", "Pending"],
["Fresh", "Bannana", "17" "Out of stock"],
["Kitchen", "Spoon", "0.99", "Out of stock"]]
await googleSheets.spreadsheets.values.append({
auth,
spreadsheetId,
range: "Products",
valueInputOption: "USER_ENTERED",
resource: {
values: values,
},
});
实现此目标的最佳方法是什么?批量更新?如何使用 batchUpdate 实现?
在您的情况下,使用 ConditionalFormatRule 怎么样?当使用 ConditionalFormatRule 时,当脚本为 运行 一次时,颜色会自动反映出来。为了实现这一点,示例脚本如下。
示例脚本:
const googleSheets = google.sheets({ version: "v4", auth }); // Please use your authorization script.
const spreadsheetId = "###"; // Please set Spreadsheet ID.
const sheetId = "###"; // Please set Sheet ID.
// These values and colors are from your showing image.
const colorObj = [
{ value: "On Stock", rgb: [182, 215, 168] }, // #b6d7a8
{ value: "Out of stock", rgb: [244, 204, 204] }, // #f4cccc
{ value: "Pending", rgb: [252, 229, 205] }, // #fce5cd
];
const requests = colorObj.map(({ value, rgb }, i) => ({
addConditionalFormatRule: {
index: 0,
rule: {
booleanRule: {
condition: {
values: [
{
userEnteredValue: value,
},
],
type: "TEXT_EQ",
},
format: {
backgroundColor: {
red: rgb[0] / 255,
green: rgb[1] / 255,
blue: rgb[2] / 255,
},
},
},
ranges: [
{
sheetId,
startColumnIndex: 3,
endColumnIndex: 4,
startRowIndex: 1,
},
],
},
},
}));
const res = await googleSheets.spreadsheets.batchUpdate({
spreadsheetId,
resource: { requests },
});
- 在这个修改中,这个ConditionalFormatRule体现在“D2:D”的范围内。
注:
- 我从您的显示脚本中猜测,您可能正在为 Node.js 使用 googleapis。因此,此示例脚本适用于 Node.js.
的 googleapis
参考文献:
我有一个值数组,我想通过 API 插入到 google sheet,我需要根据单元格的内容为某些单元格设置颜色格式如下图所示的单元格:
我可以使用追加来插入值,但我没有找到任何格式化追加请求的示例。
let values = [["Department", "Product", "Cost", "Status"],
["Clothes", "Socks", "12" "On Stock"],
["Clothes", "Hat", "15.99", "Out of stock"],
["Fresh","Apple", "18", "Pending"],
["Fresh", "Bannana", "17" "Out of stock"],
["Kitchen", "Spoon", "0.99", "Out of stock"]]
await googleSheets.spreadsheets.values.append({
auth,
spreadsheetId,
range: "Products",
valueInputOption: "USER_ENTERED",
resource: {
values: values,
},
});
实现此目标的最佳方法是什么?批量更新?如何使用 batchUpdate 实现?
在您的情况下,使用 ConditionalFormatRule 怎么样?当使用 ConditionalFormatRule 时,当脚本为 运行 一次时,颜色会自动反映出来。为了实现这一点,示例脚本如下。
示例脚本:
const googleSheets = google.sheets({ version: "v4", auth }); // Please use your authorization script.
const spreadsheetId = "###"; // Please set Spreadsheet ID.
const sheetId = "###"; // Please set Sheet ID.
// These values and colors are from your showing image.
const colorObj = [
{ value: "On Stock", rgb: [182, 215, 168] }, // #b6d7a8
{ value: "Out of stock", rgb: [244, 204, 204] }, // #f4cccc
{ value: "Pending", rgb: [252, 229, 205] }, // #fce5cd
];
const requests = colorObj.map(({ value, rgb }, i) => ({
addConditionalFormatRule: {
index: 0,
rule: {
booleanRule: {
condition: {
values: [
{
userEnteredValue: value,
},
],
type: "TEXT_EQ",
},
format: {
backgroundColor: {
red: rgb[0] / 255,
green: rgb[1] / 255,
blue: rgb[2] / 255,
},
},
},
ranges: [
{
sheetId,
startColumnIndex: 3,
endColumnIndex: 4,
startRowIndex: 1,
},
],
},
},
}));
const res = await googleSheets.spreadsheets.batchUpdate({
spreadsheetId,
resource: { requests },
});
- 在这个修改中,这个ConditionalFormatRule体现在“D2:D”的范围内。
注:
- 我从您的显示脚本中猜测,您可能正在为 Node.js 使用 googleapis。因此,此示例脚本适用于 Node.js. 的 googleapis