GAS 目次 - ray88’s diary
各種目次 - ray88’s diary
以下は赤色の背景色をチェックするコードだが、別の色をチェックしたいときは「function isRed(color)」関数の「const target = '#ff0000';」の色コードを変更すればよい
/** * 指定したシートとセル範囲内の赤色セルのアドレスを配列で返します。 * * @param {string} sheetName - チェック対象のシート名(例: "シート1") * @param {string} rangeA1 - チェック対象のセル範囲(A1記法、例: "C3:E10") * @returns {string[]} 赤色セルのA1形式のアドレス配列(例: ["C3", "D4"]) * @throws {Error} 指定されたシートが存在しない場合にエラーをスローします。 */ function getRedCellAddresses(sheetName, rangeA1) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); if (!sheet) { throw new Error(`シート「${sheetName}」が見つかりません`); } const range = sheet.getRange(rangeA1); const backgrounds = range.getBackgrounds(); const numRows = range.getNumRows(); const numCols = range.getNumColumns(); const startRow = range.getRow(); const startCol = range.getColumn(); const redCells = []; for (let i = 0; i < numRows; i++) { for (let j = 0; j < numCols; j++) { const color = backgrounds[i][j]; if (isRed(color)) { const cell = sheet.getRange(startRow + i, startCol + j); redCells.push(cell.getA1Notation()); } } } Logger.log(`赤いセルのアドレス(${sheetName} - ${rangeA1}): ${JSON.stringify(redCells)}`); return redCells; } /** * 色コードが完全な赤色(#ff0000)かどうかを判定します。 * * @param {string} color - 背景色の16進カラーコード(例: "#ff0000") * @returns {boolean} 赤色と一致する場合は true、それ以外は false */ // 🔴 完全な赤を判定(必要に応じて近似色に対応可能) function isRed(color) { const target = '#ff0000'; return color.toLowerCase() === target; }
呼び出し例
function main(){ let result = getRedCellAddresses('シート1','B2:C12') // 改行で結合されたメッセージ作成 let message; if (result.length === 0) { message = '赤色のセルは見つかりませんでした。'; } else { message = '以下のセルが赤色です:\n' + result.join('\n'); } // UIにアラートを表示 SpreadsheetApp.getUi().alert(message); //完了ログ出力 Logger.log('完了') }