我正在使用forEach迭代一系列玩家名称并添加字符串'plays soccer'。这个名字。当我使用Logger.log时,一切都按预期显示。每个球员的名字都被列为“鲍勃踢足球”。或者'约翰踢足球'。
但是,当我尝试将其放入工作表时,我只获得数组中的姓氏。
如何让列表中的每个名称显示在表格中,特别是使用forEach?
我知道有一些方法可以使用标准for循环,但我觉得我更好地理解这种语法,而使用for循环我真的不明白它是如何工作的。即使试图从其他人所做的事情中复制它对我来说也没有多大意义。我敢肯定我错过了一些愚蠢而简单的东西,但我无法弄明白。
注意:即使我将“numRows”更改为4,它也会重复“Tim扮演足球”。四次。我希望每个名字都出现一次。
function forEachTest (){
var players = ['Bob', 'John', 'Mark', 'Tim'];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var startRow = 1
var startColumn = 1
var numRows = 1
var numColumns = 1
var dataRange = sheet.getRange(startRow, startColumn, numRows, numColumns);
players.forEach(function(eachPlayer) {
Logger.log(eachPlayer + ' plays soccer.');
Logger.log(eachPlayer);
dataRange.setValue(eachPlayer + ' plays soccer.');
});
答案 0 :(得分:0)
您需要单独设置范围,现在它在第一个单元格上逐个写入正确的名称,如果更改numRow,则将其写入所有单元格
类似的东西:
var i = 1;
players.forEach(function(eachPlayer) {
Logger.log(eachPlayer + ' plays soccer.');
Logger.log(eachPlayer);
dataRange = sheet.getRange(startRow + i, startColumn);
dataRange.setValue(eachPlayer + ' plays soccer.');
i++; //to get the next row
});
如果你真的不想i
,你甚至可以使用sheet.addRow
为每个玩家创建一个新的空行。
答案 1 :(得分:0)
您将整个dataRange的值设置为相同的值四次。您需要迭代设置每个玩家的值,如下所示:
function forEachTest (){
var players = ['Bob', 'John', 'Mark', 'Tim'];
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var currentRow = 1;
var startColumn = 1;
players.forEach(function(eachPlayer) {
Logger.log(eachPlayer + ' plays soccer.');
Logger.log(eachPlayer);
sheet.getRange(currentRow, startColumn).setValue(eachPlayer + ' plays soccer.');
currentRow++;
});