0
function checkWho(n,b)
{
 // n and be are comparing two different cells to check if the name is in the registry
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getActiveSheet();
 var glr = sheet.getLastColumn();
 var glr2 = sheet.getLastRow();
for(var i = 9; i <= glr; i++)
 {
   for(var z = 10; z<= glr2; z++)
    {
      if( n == b)
      {
       var courts = sheet.getRange(3,i).getValue();
       var times = sheet.getRange(z,10).getValue();
       return(b+ " "+"has booked"+" "+ courts+" "+"at"+times);
}
}
}
}

我在打印出 和 中包含的值时遇到var courts问题var times。我的代码由两个 for 循环组成,遍历列和行并最终吐出用户名、他们预订的球场和时间。截至目前,该名称已被印刷,但法院和时代并未印刷。

它当前打印:"(name) has booked at"
当我想要它打印时:" (name) has booked court 1 at 4:30"

对情况有什么帮助吗?

4

1 回答 1

0

发生的事情是嵌套的 for 语句正在覆盖结果。球场和时间很可能是""(空字符串),因为迭代是从开始列/行完成的,并在接下来的列/行中重复。最后一列/行为空是很常见的。

旁注:

  1. 该脚本包含一个注释,提到自定义函数参数是单元格,但自定义函数不能使用单元格作为参数,这与getCurrentCell()的意义相同。自定义函数参数类型可以是字符串、数字、日期或数组。

  2. 比较嵌套 for 语句中的参数是没有意义的,因为它们在每次迭代中都不会改变。

  3. 在嵌套的 for 语句中包含 return 将停止迭代。由于参数不依赖于迭代,因此仅针对问题中考虑的情况进行第一次迭代。

于 2018-07-13T17:27:51.587 回答