如何找到具有特定背景颜色的单元格,并设置与其相关的不同单元格的背景?
How do I find the cell with a certain background color, and set background of different cell in relation to it?
我正在尝试编写一个代码来找到电子表格中的红色单元格,并将其向上移动一个单元格。这是我拥有的:
var ymax = 23;
var xmax = 23;
var playerx = 0;
var playery = 0;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
function moveup(){
findplayer();
sheet.getRange(playerx, playery + 1).setBackground('red');
sheet.getRange(playerx, playery).setBackground('white');
}
function findplayer(){
for(var x = 1; x < xmax; x++)
for(var y = 1; y < ymax; y++)
{
var cell = sheet.getRange( 'a1:z23' ).getCell(x, y).getBackground();
if(cell = 'red'){
var playerfound = true;
playerx = x;
playery = y;
}
}
if (playerfound = false)
{
findplayer();
}
}
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('controol')
.addItem('up', 'moveup')
.addToUi();
}
出于某种原因,它没有将红色方块从 T10 移开,而是在 W22 处创建了一个新方块。
我做错了什么?
我也主张权利
这会将红色单元格向上移动一个,当它到达顶部时环绕到底部。
function moveRedCell(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getRange(1,1,20,10);
var cA=rg.getBackgrounds();
var changed=false;
for(var i=0;i<cA.length;i++){
for(var j=0;j<cA[i].length;j++){
if(cA[i][j]=='#ff0000' && !changed){
if(i>0){
cA[i][j]='#00ff00'; //assume green is default background
cA[i-1][j]='#ff0000';
}else{
cA[i][j]='#00ff00'; //assume green is default background
cA[cA.length-1][j]='#ff0000';
}
changed=true;
}
}
}
rg.setBackgrounds(cA);
}
以下比较有误:
cell = 'red'
playerfound = false
他们使用单个等号,在 JavaScript 中用于为变量赋值,而应该使用 ==
(抽象相等)或 ===
(严格相等) ).
另一方面,getBackground() returns 颜色代码,而不是颜色名称,所以使用 #ff0000
.
而不是红色
我正在尝试编写一个代码来找到电子表格中的红色单元格,并将其向上移动一个单元格。这是我拥有的:
var ymax = 23;
var xmax = 23;
var playerx = 0;
var playery = 0;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
function moveup(){
findplayer();
sheet.getRange(playerx, playery + 1).setBackground('red');
sheet.getRange(playerx, playery).setBackground('white');
}
function findplayer(){
for(var x = 1; x < xmax; x++)
for(var y = 1; y < ymax; y++)
{
var cell = sheet.getRange( 'a1:z23' ).getCell(x, y).getBackground();
if(cell = 'red'){
var playerfound = true;
playerx = x;
playery = y;
}
}
if (playerfound = false)
{
findplayer();
}
}
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('controol')
.addItem('up', 'moveup')
.addToUi();
}
出于某种原因,它没有将红色方块从 T10 移开,而是在 W22 处创建了一个新方块。
我做错了什么?
我也主张权利
这会将红色单元格向上移动一个,当它到达顶部时环绕到底部。
function moveRedCell(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getRange(1,1,20,10);
var cA=rg.getBackgrounds();
var changed=false;
for(var i=0;i<cA.length;i++){
for(var j=0;j<cA[i].length;j++){
if(cA[i][j]=='#ff0000' && !changed){
if(i>0){
cA[i][j]='#00ff00'; //assume green is default background
cA[i-1][j]='#ff0000';
}else{
cA[i][j]='#00ff00'; //assume green is default background
cA[cA.length-1][j]='#ff0000';
}
changed=true;
}
}
}
rg.setBackgrounds(cA);
}
以下比较有误:
cell = 'red'
playerfound = false
他们使用单个等号,在 JavaScript 中用于为变量赋值,而应该使用 ==
(抽象相等)或 ===
(严格相等) ).
另一方面,getBackground() returns 颜色代码,而不是颜色名称,所以使用 #ff0000
.