在Google表格中,我在提示用户输入该范围内的起始范围和行数后,尝试按顺序输入数字。如果用户键入单元格" C5"例如,输入5行,结果应该是来自单元格C5 - C10(1,2,3,4,5)
我找到了一种在所有行中输入相同值的方法,但我似乎无法遍历用户提供的范围并在每个单元格中设置不同的值。
function placeInCell() {
var mySheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = mySheet.getSheetByName('Second');
var ui = SpreadsheetApp.getUi();
var result = ui.prompt('What cell to start with?',
ui.ButtonSet.OK);
var result2 = ui.prompt('How many cells?', ui.ButtonSet.OK);
// Process the user's response.
var button = result.getSelectedButton();
var cell = result.getResponseText();
var button2 = result2.getSelectedButton();
var numCells = result2.getResponseText();
var cellRange = sheet.getRange(cell);
cellRange = cellRange.offset(0, 0, numCells);
//iterate through the range given by the user and set values
//in each row
for (var i = 0; i < numCells; i++){
cellRange.setValue(i);
};
}
答案 0 :(得分:1)
在Google Apps脚本中,范围使用索引1..n
进行处理,与0..n-1
不同,例如数组。
此外,无法使用[]
像数组一样处理范围:您需要使用offset
等方法。
这就是为什么,正如您所评论的那样,“ cellRange [i] [0] .setValue(i)抛出错误。它表示cellRange [i] [0]未定义”。
尝试@ SpiderPig的解决方案,它应该适合你。它使用一般的良好做法或最小化服务器端调用的数量,例如getRange
,setValue
或offset
,而不是在数组上本地(客户端)工作:首先使用myRange .getValues,然后处理你的数组,最后是myRange.setValues。