Google Apps脚本会在数组中查找值

时间:2016-12-29 12:42:22

标签: google-apps-script

我无法弄清楚如何检查数组中是否存在值。我认为这应该是简单的,但不能到达那里。

我有这段代码:

function findPlayer() {
 //This section gets the values from the first row of all the columns
 var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Players");
 var lastColumn = ss.getLastColumn()
 var playerNameRow = ss.getRange(1, 2, 1, lastColumn - 3); 
 var playerNameValues = playerNameRow.getValues(); 

 //This just sets the value we're looking for (which in this example is in the 7th Column "G"). And logs the Array, just to check it.
 var findPlayer = "Dan";
 Logger.log(playerNameValues)


 //and here we just loop through the playerNameValues array looking for the findPlayer value
 for(var n in playerNameValues){
 if(playerNameValues[n][0]== findPlayer) {break}
}

//and here, if the above search does find the matching value it should log it 
Logger.log(n);
}

正在发生的事情是playerNameValue正确记录,但是n总是记录为0.这意味着它在它检查的第一个项目中找到了值,而不是第7个值所在的值。

2 个答案:

答案 0 :(得分:2)

我注意到你提到播放器是第7列。注意你实际检查的是

第1行第1列 第2行第1列 第3行第1列

除了if(playerNameValues[n][0]== findPlayer) {break} var i之外,实际上从来没有触及任何列。而是这样做(我假设你已经var nfor (i = 0; i < playerNameValues.length; i++) { for (n = 0; n < playerNameValues[i].length; n++) { if (playerNameValues[i][n] == findPlayer) break } if (playerNameValues[i][n] == findPlayer) break }

execute javascript "document.body.querySelector(\"div.users-list\").innerHTML"

我们做了第二次休息以突破第二次循环,但是有更好的方法来编写代码,这只是为了说明你需要做的事情。

答案 1 :(得分:1)

您的行和列是相反的,请使用:

 for(var n in playerNameValues[0]){
 if(playerNameValues[0][n]== findPlayer) {break}
}

或者另一种方法是使用indexOf而不是上面。

Logger.log(playerNameValues[0].indexOf(findPlayer));