我在google
电子表格中创建世界杯支架,并希望根据匹配的两个单元格的值设置单元格的值。
我的代码设置单元格02的值,而不管匹配的单元格(B3和B10)。
我不确定如何解决?
function groupAA() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var groupA = ss.getRangeByName("groupA");
var groupAvalues = groupA.getValues();
var winnerA = sheet.getRange('B2').getValue();
var runnerUpA = sheet.getRange('B3').getValue();
var guessWinnerA = sheet.getRange('B10').getValue();
for (var i=0; i < groupAvalues.length; i++) {
var winnerGroupA = groupAvalues[i];
if(winnerGroupA == guessWinnerA){
setPoints('o2', '2');
}
}
}
function setPoints(rangeName, value){
SpreadsheetApp.getActiveSheet().getRange(rangeName).setValue(value)
}
请指导我实现目标的正确方法。
答案 0 :(得分:0)
这看起来像一个逻辑问题。请查看您分配给groupA的内容。如果我将获得亚军和获胜者分配给groupA(因为设计了世界杯),我会得到相同的结果。换句话说,仅当您将仅获胜者分配给groupA时,此功能才有效。
请注意此行var winnerGroupA = groupAvalues[i];
。因为您正在遍历所有groupA并将每个值分配给winnerGroupA。你基本上是说每个人都赢了。
这是我为你工作的一个例子。
function groupAA()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var groupA = ss.getRangeByName("groupA");
var winners = ss.getRangeByName("winners");
var guesses = ss.getRangeByName("guesses");
var guessesAvalues = guesses.getValues();
var groupAvalues = groupA.getValues();
var winnersAvalues = winners.getValues();
var winnerA = sheet.getRange('B2').getValue();
var runnerUpA = sheet.getRange('B3').getValue();
var guessWinnerA = sheet.getRange('B10').getValue();
setPoints('o2', '0');
for (var i =0; i< guessesAvalues.length; i++)
{
for (var j=0; j < winnersAvalues.length; j++) {
if((winnersAvalues[j].toString() == guessesAvalues[i].toString())&&(winnersAvalues[j]!=''&&winnersAvalues[j]!=null))
{
var currentRange = SpreadsheetApp.getActiveSheet().getRange('o2');
setPoints('o2', currentRange.getCell(1,1).getValue()+Number(2));
}
}
}
}
function setPoints(rangeName, value){
Logger.log(value);
SpreadsheetApp.getActiveSheet().getRange(rangeName).setValue(value);
}
function onEdit(){
groupAA();
}
所以我创造了一系列获胜者和猜测范围(其长度是任意的)。看下面的图片看电子表格布局(我不知道墨西哥是否还没赢,所以不要告诉我):
您会注意到我在前面添加了分数初始化为0。我也转换为字符串,但你可能不必这样做。然后检查以确保其中一个获胜队伍不是空白,如果所有这些都通过,我会在你表达兴趣时将分数增加2。您还会注意到我添加了onEdit()来调用groupAA(),以便在您添加猜测时自动神奇地更新,这样您就可以看到让它们变得正确,完全错误,并且正确的结果。以下是一个失败猜测的例子: