我在 Google 電子表格中有一個母版,如下所示;

我想要的是從谷歌電子表格中給定的標簽/作業表(A 列)中獲取顏色計數。根據我在 stackoverflow 中的研究,我發現代碼在活動的單個作業表中完美運行(
多張
function getBGColorCountMultipleSheets(col, shts, ss) {
var ss = ss || SpreadsheetApp.getActive();
var shts = shts || ['Sheet1', 'Sheet2', 'Sheet0'];
var col = col || 1;
let colors = { pA: [] };
ss.getSheets().filter(s => ~shts.indexOf(s.getName())).forEach(sh => {
let bgs = sh.getRange(1, col, sh.getMaxRows()).getBackgrounds().flat();
bgs.forEach((c, i) => {
if (!colors.hasOwnProperty(c)) {
colors[c] = 1;
colors.pA.push(c);
} else {
colors[c] = 1;
}
});
});
let html = '<style>td,th{border:1px solid black;width:25px;}</style><table>';
//add this to remove white filter(p => p != "#ffffff")
colors.pA.forEach(p => {
html = `<tr><td style="background-color:${p};"></td><td>${colors[p]}</td></tr>`;
});
html = '</table>'
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html), 'Color Count');
}

uj5u.com熱心網友回復:
這是在單個谷歌電子表格中計算多個作業表中彩色單元格的作業代碼:
function goToSheet(countRange,colorRef,sheetName) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName(sheetName));
var activeRange = SpreadsheetApp.getActiveRange();
var activeSheet = activeRange.getSheet();
var formula = activeRange.getFormula();
const backgrounds = SpreadsheetApp.getActive()
.getSheetByName(sheetName)
.getRange(countRange)
.getBackgrounds();
var colorRefBackground = activeSheet.getRange(colorRef).getBackgrounds();
var count = 0;
for(var i=0;i<backgrounds.length;i )
for(var j=0;j<backgrounds[0].length;j )
if( backgrounds[i][j] == colorRefBackground )
count=count 1;
return count;
}
我要感謝幫助我實作它的用戶 https://stackoverflow.com/users/8404453/themaster并且我改變了
var colorRefBackground = activeSheet.getRange(colorRef).getBackground()
到
var colorRefBackground = activeSheet.getRange(colorRef).getBackgrounds()
它回傳范圍內單元格的背景顏色。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/378459.html
標籤:谷歌应用程序脚本 谷歌表格 谷歌表格公式 google-sheets-api
上一篇:查找連續最后6個值的滾動平均值
