Google Sheets脚本:如何向嵌套匿名map函数传递参数
向嵌套匿名map函数传递颜色参数的几种方法
方法1:外部定义颜色变量(最简便)
在函数开头定义颜色对象,嵌套map里直接引用即可,后续修改颜色只需调整这个变量:
function myFunction() { const spreadsheetId = "###"; const grid = { sheetId: 0, startRow: 0, startCol: 0 }; const values = [["sample value1", "sample value2"], ["sample value3", "sample value4"]]; // 定义颜色参数,可直接修改或从其他逻辑传入 const bgColor = { red: 1, green: 0.4, blue: 0.4 }; const request = [{ updateCells: { range: { sheetId: grid.sheetId, startRowIndex: grid.startRow, startColumnIndex: grid.startCol, }, rows: values.map(r => ({ values: r.map(c => ({ userEnteredFormat: { backgroundColor: bgColor }, userEnteredValue: { stringValue: c } })) })), fields: "userEnteredFormat,userEnteredValue" } }]; Sheets.Spreadsheets.batchUpdate({ requests: request }, spreadsheetId); }
方法2:将颜色作为函数参数传入(提升复用性)
给myFunction添加颜色参数,调用时可灵活指定不同颜色,还能设置默认值:
// 给函数添加颜色参数,默认值可选 function myFunction(bgColor = { red: 1, green: 0.4, blue: 0.4 }) { const spreadsheetId = "###"; const grid = { sheetId: 0, startRow: 0, startCol: 0 }; const values = [["sample value1", "sample value2"], ["sample value3", "sample value4"]]; const request = [{ updateCells: { range: { sheetId: grid.sheetId, startRowIndex: grid.startRow, startColumnIndex: grid.startCol, }, rows: values.map(r => ({ values: r.map(c => ({ userEnteredFormat: { backgroundColor: bgColor }, userEnteredValue: { stringValue: c } })) })), fields: "userEnteredFormat,userEnteredValue" } }]; Sheets.Spreadsheets.batchUpdate({ requests: request }, spreadsheetId); } // 调用时自定义颜色 myFunction({ red: 0.2, green: 0.8, blue: 0.2 });
方法3:给不同行/单元格设置不同颜色(进阶场景)
如果需要区分行或单元格的颜色,可以利用map的索引参数,搭配颜色数组实现:
function myFunction() { const spreadsheetId = "###"; const grid = { sheetId: 0, startRow: 0, startCol: 0 }; const values = [["sample value1", "sample value2"], ["sample value3", "sample value4"]]; // 定义每行对应的颜色数组 const rowColors = [ { red: 1, green: 0.4, blue: 0.4 }, { red: 0.4, green: 1, blue: 0.4 } ]; const request = [{ updateCells: { range: { sheetId: grid.sheetId, startRowIndex: grid.startRow, startColumnIndex: grid.startCol, }, rows: values.map((r, rowIndex) => ({ values: r.map(c => ({ userEnteredFormat: { backgroundColor: rowColors[rowIndex] }, userEnteredValue: { stringValue: c } })) })), fields: "userEnteredFormat,userEnteredValue" } }]; Sheets.Spreadsheets.batchUpdate({ requests: request }, spreadsheetId); }
内容的提问来源于stack exchange,提问作者user2852591
相关产品推荐
相关产品推荐

