如果單元格的背景顏色 = #ffff00,我正在嘗試撰寫一個簡單的腳本來清除特定 Google 表格范圍 [H29:H] 中的值。雖然腳本不會回傳任何錯誤,但它不會對滿足這些條件的單元格(或作業表中的任何其他地方)進行任何更改。關于我哪里出錯的任何指導?
function resetCells() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Test Sheet');
var rangeData = sheet.getDataRange();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange('H29:H');
var rangeColors = searchRange.getBackgrounds();
for ( i = 29 ; i < lastRow - 1; i ){
if(rangeColors[i][8] === '#ffff00'){
sheet.getRange(i,8).clearContent();
};
};
}
uj5u.com熱心網友回復:
當我看到你的腳本時,我認為在for回圈中的索引rangeColors可能不對應i。我認為這可能是您的問題的原因。在這種情況下,如何進行以下修改?
修改后的腳本:
從:
for ( i = 29 ; i < lastRow - 1; i ){
if(rangeColors[i][8] === '#ffff00'){
sheet.getRange(i,8).clearContent();
};
};
到:
for (i = 0; i < rangeColors.length; i ) {
if (rangeColors[i][0] === '#ffff00') {
sheet.getRange(i 29, 8).clearContent();
}
}
或者,在您的情況下,當sheet.getRange(i 29, 8).clearContent()在回圈外使用時,程序成本可能會降低一點。在這種情況下,請進行如下修改。
var rangeList = rangeColors.reduce((ar, [h], i) => {
if (h === '#ffff00') ar.push("H" (i 29));
return ar;
}, []);
sheet.getRangeList(rangeList).clearContent();
- 本次修改中,當“H”列的單元格背景色為 時,單元
#ffff00格內容清晰。
參考:
- 類范圍串列
uj5u.com熱心網友回復:
你做錯了什么
在rangeColors[i][8]您假設rangeColors與電子表格中的單元格相關。但它們實際上與searchRange你制作的有關。所以rangeColors[i][8]應該是rangeColors[i][0]。從哪里i開始0。
為了使它對您“特別有趣”,rangeColors是一個從零開始索引的陣列。當您使用范圍時,您可以使用 檢索第一個單元格range.getCell(1, 1),而不是range.getCell(0, 0)。
因為我有點忘乎所以我寫了這個解決方案(可能是一個有趣的額外閱讀)
我不認為將一組陣列 ( rangeColors)映射到一個范圍是一個很好的方法;很難跟蹤您的代碼在做什么。
我所做的是:
- 創建要檢查的范圍
- 為范圍內的所有單元格生成列號和行號。請注意,這些是相對于范圍的,而不是與樣式表相關的。所以,
range.getCell(1, 1)剩下的細胞頂部的范圍。這是您在代碼中犯的(主要)錯誤。 - 對范圍內的每個單元格做任何你想做的事情。
代碼:
resetCells( '#ffff00' );
function resetCells( color ) {
const app= SpreadsheetApp.getActiveSpreadsheet();
const sheet = app.getSheetByName('Sheet1');
const range = sheet.getRange('F4:F50');
for( let row = 1; row < range.getNumRows() 1; row ) {
for( let column = 1; column < range.getNumColumns() 1; column ) {
const cell = range.getCell( row, column );
if( cell.getBackground() === color )
cell.clearContent();
}
}
}
免責宣告:我以前從未使用過這個 google-app-script。所以我可能在性能方面做錯了;迭代大量單元格需要一點時間;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379788.html
標籤:javascript for循环 谷歌应用程序脚本 谷歌表格
