如何仅使用 google 脚本为我的 google sheet 创建条件格式?
How do I create a conditional format for my google sheet using only google scripting?
我想在我的大学学习如何使用 google 脚本,但我不太了解如何使用条件格式?我目前正在尝试执行以下操作:
“查看谁有资格获得免费学位奖学金的脚本!在您这样做之前,返回 sheet 并在 spreadsheet 上创建一个带有 header 'eligibility' 然后,您的脚本应确定该学生的出勤率是否超过 80% 且收入是否低于 30,000。在相关列的单元格中打印以说明该学生是否符合条件。"
所以我有 2 条数据需要条件格式,但只使用链接到 google sheet 的 google 脚本。我不是要求为我写出答案,但我希望任何人都能提供任何帮助,因为我不知道从哪里开始?
如果有人能告诉我具体的规则或为此我需要什么代码,将不胜感激!
这是您可以执行的示例。我使用一些数据生成器来生成随机数。然后我对每一行求和,然后将它们归一化为具有最大总和的行。最后一个循环根据 colorA 和计算出的 idx 设置背景颜色。黄色是最大值,绿色是下一个最高范围,红色都低于最大值的 80%。
这是颜色:
function idWinners() {
const colorA=['red','red','red','red','red','red','red','red','green','green','yellow'];
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName('Sheet34');
const shsr=2;
const rg=sh.getRange(shsr,1,sh.getLastRow()-shsr+1,sh.getLastColumn());
const vs=rg.getValues();
let pA=[];
let max=0;
let maxro=0;
vs.forEach((r,i)=>{
let sum=0;
r.forEach((c,j)=>{
sum+=c;
});
pA.push({total:sum,row:i+shsr})
if(sum>max) {
max=sum;
maxro=i+shsr;
}
});
pA.forEach((r,i)=>{
r['nv']=r.total/max;//normalize all values to the max value
r['idx']=Math.round(r.nv*10);//calculate background color index into color A
r['color']=colorA[r.idx];
sh.getRange(i+shsr,1,1,sh.getLastColumn()).setBackground(r.color);//set background color array for each row
});
const end="is near";
}
因此请考虑您需要对数据执行哪种计算以及背景颜色如何与背景颜色相关联。我在大约 20 分钟内完成了这段代码。因此,一旦您熟悉了脚本,您就可以在短时间内完成一些非常有趣的事情。
我想在我的大学学习如何使用 google 脚本,但我不太了解如何使用条件格式?我目前正在尝试执行以下操作:
“查看谁有资格获得免费学位奖学金的脚本!在您这样做之前,返回 sheet 并在 spreadsheet 上创建一个带有 header 'eligibility' 然后,您的脚本应确定该学生的出勤率是否超过 80% 且收入是否低于 30,000。在相关列的单元格中打印以说明该学生是否符合条件。"
所以我有 2 条数据需要条件格式,但只使用链接到 google sheet 的 google 脚本。我不是要求为我写出答案,但我希望任何人都能提供任何帮助,因为我不知道从哪里开始?
如果有人能告诉我具体的规则或为此我需要什么代码,将不胜感激!
这是您可以执行的示例。我使用一些数据生成器来生成随机数。然后我对每一行求和,然后将它们归一化为具有最大总和的行。最后一个循环根据 colorA 和计算出的 idx 设置背景颜色。黄色是最大值,绿色是下一个最高范围,红色都低于最大值的 80%。
这是颜色:
function idWinners() {
const colorA=['red','red','red','red','red','red','red','red','green','green','yellow'];
const ss=SpreadsheetApp.getActive();
const sh=ss.getSheetByName('Sheet34');
const shsr=2;
const rg=sh.getRange(shsr,1,sh.getLastRow()-shsr+1,sh.getLastColumn());
const vs=rg.getValues();
let pA=[];
let max=0;
let maxro=0;
vs.forEach((r,i)=>{
let sum=0;
r.forEach((c,j)=>{
sum+=c;
});
pA.push({total:sum,row:i+shsr})
if(sum>max) {
max=sum;
maxro=i+shsr;
}
});
pA.forEach((r,i)=>{
r['nv']=r.total/max;//normalize all values to the max value
r['idx']=Math.round(r.nv*10);//calculate background color index into color A
r['color']=colorA[r.idx];
sh.getRange(i+shsr,1,1,sh.getLastColumn()).setBackground(r.color);//set background color array for each row
});
const end="is near";
}
因此请考虑您需要对数据执行哪种计算以及背景颜色如何与背景颜色相关联。我在大约 20 分钟内完成了这段代码。因此,一旦您熟悉了脚本,您就可以在短时间内完成一些非常有趣的事情。