javascript 尝试为GoogleSheets编写一个基本脚本,计算迟到学生的总缺席分钟数

vojdkbi0  于 2023-02-07  发布在  Java
关注(0)|答案(2)|浏览(133)

我是(非常)新的应用程序脚本和JS一般。我试图写一个脚本,将自动计算学生进入时间和课程开始时间之间的差异,以提供总分钟错过。
我已经有了一个函数,它可以对单个单元格的值执行此操作,但在跨范围迭代时遇到了麻烦。毫无疑问,这是由于我对正在使用的for循环有一个根本性的误解,但我不确定在哪里可以找到更详细的信息。
任何和所有的建议都是赞赏的。请记住我的极端“初学者状态”。
我试过声明一个空变量,并将以前编写的单单元函数的多个结果加到这个总数中,但是不管给定的信息如何,它都返回0。
我包括下面的所有三个功能,想法是每个功能将完成整个任务的一部分。

function LATENESS (entry,start) {
return (entry-start)/60000
}

function MISSEDMINUTES(studenttime,starttime) {
  const time = studenttime;
  const begin = starttime;
  if (time=="Present") {
    return 0
  } else if (time=="Absent") {
    return 90
  } else {
    return LATENESS(time,begin)
  }
}

function TOTALMISSED(range,begintime) {
  var total = 0
  for (let i = 0; i < range.length; i++) {
    total = total + MISSEDMINUTES(i,begintime)
  }
}```
vaqhlq81

vaqhlq811#

我很肯定你可以用普通的工作表公式来做你想做的事情。这里有一个工作表示例,它展示了如何在两次计算中得到分钟和秒的差值......沿着缺席的原因。
下面是使用的公式,它将随新条目更新。
=Filter({if(B2:B="Absent",90*60,Round((C2:C-B2:B)*3600*24,0)),if(B2:B="Absent",90,Round((C2:C-B2:B)*3600*24/60,1))},(B2:B<>""))
这个例子可能不能解决你所有的问题,但是就我所看到的,没有必要使用应用脚本,如果这不能解决它,用Mark down table发布一些示例数据。

nnsrf1az

nnsrf1az2#

如果您稍微调整一下布局,让"缺失分钟"列紧邻姓名列,您就可以使用一个公式来计算任意数量的学生在任意天数内缺失的分钟:
| 姓名|土耳其 *|2/6|2月7日|2月8日|2月9日|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 约翰·史密斯|- -|出席|出席|缺席|十点零六分|
| 露西·Jenkins|- -|缺席|缺席|缺席|缺席|
| 达伦·波特|- -|出席|出席|出席|十点零一分|
在A1中出现"Name"的情况下,将以下内容添加到单元格B1(我在此处标记了星号):

={"mins missed";
byrow(map(
C2:index(C2:ZZZ,counta(A2:A),counta(C1:1)),
          lambda(x,switch(x,"Present",0,"Absent",90,,0,1440*(x-timevalue("10:00"))))),
      lambda(row,sum(row)))}

我们将一个分钟值Map到表中的每个条目上(其中'Present'= 0,'Absent'= 90 &一个时间条目=当时与上午10点之间的分钟数差),然后按行求和。

相关问题