【问题标题】:Javascript: why my indexof would return the row where the value is foundJavascript:为什么我的 indexof 会返回找到值的行
【发布时间】:2020-09-02 21:51:37
【问题描述】:

我编写此代码的目的是在名称列表中循环。当代码在列表中找到 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,1,1,12).setValues(edittedInfo);
 }

【问题讨论】:

  • 如果这使用 excel 或 google 表格库,您将需要添加适当的标签。

标签: javascript google-apps-script google-sheets indexof


【解决方案1】:

解决办法:

  • index 取值 >=0,因此 index+1 取值 >=1。这 这就是您的代码从 first 行开始粘贴的原因。

如果要将信息粘贴到第17行(包括第17行)之后,请修改:

waitingSheet.getRange(index + 1,1,1,12).setValues(edittedInfo);

到这里:

waitingSheet.getRange(index + 17,1,edittedInfo.length,edittedInfo[0].length).setValues(edittedInfo);

因为index 可以取值>=0,所以index + 17 取值>=17,这是所需的起始行点。

另外,建议改用.length,以防您以后想更改edittedInfo 的大小。


参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-25
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2012-04-16
    • 2016-03-10
    相关资源
    最近更新 更多