You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Apps Script:表格首行颜色无法修改问题求助

Google Apps Script 首行链接颜色样式不生效问题

我正在开发一款Google Apps Script脚本,用于在脚本运行/表格打开时修改指定数据范围的链接颜色,避免出现未样式化的链接。当前版本需基于指定范围设置所有文本颜色,首行存在合并单元格,但第二行同样有合并单元格却能正常生效。

猜测的问题点:

  • 首行需设置白色文本
  • 前两行的链接需覆盖默认颜色
  • 原始数组经切片拼接后用于设置文本颜色
  • 首行颜色数组在单独循环中生成
  • 混合使用Rich Text Value与Font Color
  • 编辑的是数据范围原始数据而非显示值

我已尝试检查数组维度、添加日志调试、调整循环逻辑等,但仍未解决首行颜色不修改的问题。

相关代码:

/* @OnlyCurrentDoc */
/**
* A funtion to style links.

@param: {string} arg1 - The sheet in this workbook that's meant to be styled.
@param: {string} arg2 - Hex code expressing the desired color for just the links.
@param: {string} arg3 - Hex code expressing the desired color for the "body" of the specified sheet.
@param: {string} arg4 - Hex code expressing the desired color for the first row's text.
@param: {string} arg5 - Hex code expressing the desired color for the second row's text.

**/
function styleLinks(arg1="Neopets Blueprints Wishlist",arg2="#ffffff",arg3="#000000",arg4="#ffffff",arg5="#0b5394") {
var sheet = SS.getSheetByName("Neopets Blueprint Wishlist" || arg1);
var data1 = sheet.getDataRange();
var dataWord1 = data1.getDisplayValues();
var linkColor = '#3c78d8' || arg2;
//textColor1 is the "normal", general text color.
var textColor1 = '#000000' || arg3;
//textColor2 is the first row color.
var textColor2 = '#ffffff' || arg4;
//textColor3 is the second row color.
var textColor3 = '#0b5394' || arg5;
var data1LC = sheet.getLastColumn();
var data1LR = sheet.getLastRow();
var links1 = [];

        var inherit1 = data1.getRichTextValue();
        var inheritStyle = inherit1.getTextStyle();
        var inheritColor = inheritStyle.getForegroundColorObject();



var textColors = [];
//console.log(dataWord1.length);
//console.log(data1LC);
//console.log(data1LR);
//console.log(dataWord1[1]);
//console.log(dataWord1)
//console.log(dataWords1.length);
//console.log(dataWord1[2]);

//Below makes array of the Display Values.
var dataWords1a = dataWord1.join().split(',');
//Below makes an array of words from the previous array (Currently unused, meant for another draft of the code)
//var dataWords1b = dataWords1a.join().split(" ");

//dataWord1 is what the individual cells show (on each row), the outer array broken up by columns. 
//console.log(dataWord1);
//console.log(dataWord1[1]);

var dataRTVLinks = data1.getRichTextValues().map(r => r.map(c => {
    const link = c.getLinkUrl();
    return link;
}));

function linkBool(item) {
  if(item === null) { return false } else { return true };
}

//console.log(dataRTVLinks[1]);
//console.log(dataRTVLinks[5]);


let dataLinksBool = dataRTVLinks.map(r => r.map(linkBool));
var links2Rows = dataLinksBool.slice(0,2);
//console.log(links2Rows);
//console.log(dataLinksBool[1]);
//console.log(dataWord1[1]);

for (let i = 0; i < dataLinksBool.length; i++) {
textColors[i] = [];
for (let j = 0; j < data1LC; j++)
{if(dataLinksBool[i][j] == true){
  textColors[i][j]= linkColor} else {textColors[i][j] = textColor1;}
  }
}

//console.log(textColors.length);
//console.log(textColors[0].length);
//console.log(textColors[2].length);
//console.log(textColors[15].length);

var topColors = [];
for (let k=0; k < links2Rows.length; k++) {
topColors[k] = [];
for (let l = 0; l < data1LC; l++) {
  if(links2Rows[k][l] == true) {
    topColors[k][l] = linkColor} 
    else if (links2Rows[k][l] == false && k < 1) {
      topColors[k][l] = textColor2 } else 
      {topColors[k][l] = textColor3 }
}

}
console.log(topColors);
console.log(topColors[0].length);

topColors.flat();

let topArr1 = topColors.splice(0, 1).flat();
let topArr2 = topColors.splice(0, 1).flat();

//console.log("topArr1:");
//console.log(topArr1);
//console.log("topArr2:");
//console.log(topArr2);

textColors.splice(0,2,topArr1,topArr2);

//console.log(textColors[1]);

//data1.setFontColors(textColors);

}

//console.log(dataLinksBool[1]);
//console.log(dataLinksBool[5]);

补充说明:

脚本可根据输入的hex code设置不同区域的文本颜色,生成与表格数据维度一致的颜色数组后,通过setTextColors()方法应用。

内容的提问来源于stack exchange,提问作者Freddin Mcguyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 16:12:04