[英]Getting the cell given the cell value in google sheets using app script
我正在尝试编写一个脚本来跟踪谷歌表格中的付款日期(付款前三天显示不同的颜色(FontColor 或背景),付款当天显示另一种颜色,付款日期后显示完全不同的颜色。我'如果有人知道如何使用这些值来获取单元格名称并使用它来更改 FontColor 或者如果有更好的解决方案,我将不胜感激 这是我的谷歌表 [![在此处输入图片描述][1]] [1]
这是我为将日期放入列表而编写的代码
function myFunction() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let lastRow = spreadsheet.getLastRow();
let lastCol = spreadsheet.getLastColumn();
var dataRange = spreadsheet.getActiveSheet().getRange(2, 11, lastRow, lastCol)
dataRange.setFontColor("green")
var data = dataRange.getDisplayValues();
let dates=[];
for (let i=0; i < dates.length; i++ ) {
// console.log(dates[i])
if (dates[i] === new Date().toLocaleDateString()) {
dataRange.setBackground('pink')
} else if (dates[i]) {
// do sth
} else {
// maintain the current state
}
}
}
它需要与脚本一起使用吗? 使用条件格式会更快、更容易并且不断上传。
您可以将其应用于整个工作表或特定范围。 使用此自定义公式(将 A1 更改为范围左上角的公式)=if(A1="",FALSE,(A1 - Today()) < 0)
确保以正确的顺序设置这些条件(在这些情况下,最好是过去的日期、实际日期和最近的未来日期)。 像这样:
在这里你有一个链接可以玩: https://docs.google.com/spreadsheets/d/1zhEFRQwOyAYQwXfv5lYTjI7B-6fIfz1rgdCt3MGvzmI/edit?usp=sharing
付款追踪器
function paymentTracker() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
const rg = sh.getRange(2, 11, sh.getLastRow() - 1, sh.getLastColumn() - 10);
rg.setFontColor("black")
const vs = rg.getDisplayValues();
const d = new Date();
//Logger.log('y: %s,m: %s,d: %s', d.getFullYear(), d.getMonth(), d.getDate());
const dt = new Date(d.getFullYear(), d.getMonth(), d.getDate());
const dtv = dt.valueOf();
const dt3 = new Date(d.getFullYear(), d.getMonth(), d.getDate() + 3);
const dt3v = dt3.valueOf();
vs.forEach((r, i) => {
let ds = r.map(ds => {
let t = ds.split('/');
//Logger.log(JSON.stringify(t))
let v = new Date(Number(t[2]), Number(t[1]) - 1, Number(t[0])).valueOf();
let diff3 = dt3v - v;
if (dt3v == v) {
return "purple";
} else if (dtv == v) {
return "green";
} else {
return "pink";
}
});
sh.getRange(i + 2, 11, 1, ds.length).setBackgrounds([ds]);
})
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.