问题描述
我编写此代码的目的是循环浏览名称列表。当代码在列表中找到waitingName时,应将其显示的行替换为信息行。当我尝试运行此代码时,它将信息行粘贴到屏幕顶部,而不是名称列表开始的第17行之后。
var waitingName = waitingSheet.getRange(6,13).getValue();
var edittedInfo = waitingSheet.getRange(6,3,1,12).getValues();
var waitingListNames = waitingSheet.getRange(17,11,105,1).getValues().flat();
var index = waitingListNames.indexOf(waitingName);
if (index > -1) {
waitingSheet.getRange(index + 1,12).setValues(edittedInfo);
}
解决方法
解决方案:
-
index
取值>=0
,因此index+1
取值>=1
。这个 这就是为什么您的代码从第一行开始粘贴的原因。
如果要将信息粘贴到第17 行(包括第17行)之后,请进行以下修改:
waitingSheet.getRange(index + 1,1,12).setValues(edittedInfo);
对此:
waitingSheet.getRange(index + 17,edittedInfo.length,edittedInfo[0].length).setValues(edittedInfo);
因为index
可以取值>=0
,所以index + 17
取值>=17
是所需的起始行点。
此外,如果您想在以后更改.length
的大小,建议改用edittedInfo
。