[英]Is it possible to create a color fade for an individual cell in Google Apps Scripts for Google Sheets?
所以,如果它是最近的,即這個單元格中的時間戳,就像 5 分鍾前,那么它是深綠色,但如果是 30 分鍾前,它是淺綠色,兩小時后它會變成白色。
有問題的單元格由以下腳本控制:
function onEdit(e) {
//e.source.toast("Entry");
//console.log(JSON.stringify(e));
const sh=e.range.getSheet();
if(sh.getName()=="Sheet1" && e.range.columnStart==2 && e.value) {
e.range.offset(0,1).setValue(Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"MM/dd/yyyy HH:mm:ss"));
}
if(sh.getName()=="Sheet1" && e.range.columnStart==4 && e.value) {
e.range.offset(0,1).setValue(Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"MM/dd/yyyy HH:mm:ss"));
}
}
function bindMeOnTimeDrivenTrigger(){
var sheet = SpreadsheetApp.openById("XXXXX").getSheetByName("Sheet1");
var stampContainingColumns = [3,5];
var lastRow = sheet.getLastRow();
var stamps = [sheet.getRange(1, stampContainingColumns[0], lastRow, 1).getValues().flat(), sheet.getRange(1, stampContainingColumns[1], lastRow, 1).getValues().flat()];
var now = new Date().getTime();
var fiveMin = 5*60*1000;
var thirtyMin = 30*60*1000;
var twoHours = 120*60*1000;
for(var i =0; i < stamps.length; i++){
for(var j =0; j < stamps[0].length; j++){
if((typeof stamps[i][j]) == "object"){
if(stamps[i][j].getTime()+twoHours < now){
sheet.getRange(j+1, stampContainingColumns[i]).setBackground("white");
}
else if(stamps[i][j].getTime()+thirtyMin < now){
sheet.getRange(j+1, stampContainingColumns[i]).setBackground("lightgreen");
}
else if(stamps[i][j].getTime()+fiveMin < now){
sheet.getRange(j+1, stampContainingColumns[i]).setBackground("darkgreen");
}
}
}
}
}
當然,您可以合並更多不同的陰影和時間范圍 - 在這種情況下,您將需要實施更多不同的else
語句。
鑒於每 5 分鍾檢查一次時間戳對您來說至關重要,因此將時間驅動觸發器設置為每 5 分鍾執行一次是有意義的,但請記住, Apps 腳本配額具有Triggers total runtime per day
限制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.