我正在使用以下腳本提供 A 列的十六進制顏色代碼:
function onChange(e) {
if (e.changeType == "FORMAT") {
var formula = "=GetCellColorCode";
var tempFormula = "=sample";
var sheet = e.source.getActiveSheet();
sheet.createTextFinder(`^\\${formula}`).matchFormulaText(true).useRegularExpression(true).replaceAllWith(tempFormula);
sheet.createTextFinder(`^\\${tempFormula}`).matchFormulaText(true).useRegularExpression(true).replaceAllWith(formula);
}
}
function GetCellColorCode(input)
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell = ss.getRange(input);
var result = cell.getBackground();
return result
}
我=GetCellColorCode("A"&ROW())在 G 列中使用。但是,它跨越數百行,更新時間太長,因為當一種單元格顏色背景更改時,公式的每個實體都會更新。有沒有辦法更改此腳本,以便僅更新單元格背景顏色已更改的行上的公式?我試過使用replaceWith而不是replaceAllWith,但它根本沒有更新。提前致謝!
編輯:對于進一步的背景關系,我需要加快速度,因為我還有一個腳本可以更新我的過濾器(我想過濾掉所有綠色和紅色行),但它似乎經常超時,因此過濾器不經常更新:
function update_filter() {
var col = 7;
var filter = SpreadsheetApp.getActiveSheet().getFilter();
var criteria = filter.getColumnFilterCriteria(col);
filter.setColumnFilterCriteria(col, criteria);
}
uj5u.com熱心網友回復:
activerange 通常提供發生變化的范圍。嘗試
var sheet1/*renamed from sheet*/ = e.source.getActiveSheet();
var sheet = sheet1.getRange(sheet1.getActiveRange().getRow(),7);
變數sheet現在是range指向活動行的 G 列的型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/384477.html
