Google apps script 如何熬夜
我有一个a列-由表单(时间戳)填充-用户通过表单进行打孔 D列有一个目标日期 列E有一个目标小时(当他必须达到时) 我想显示他迟到的时间(如果他迟到了-与目标日期和时间相比) 在F列中,我输入了公式Google apps script 如何熬夜,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,我有一个a列-由表单(时间戳)填充-用户通过表单进行打孔 D列有一个目标日期 列E有一个目标小时(当他必须达到时) 我想显示他迟到的时间(如果他迟到了-与目标日期和时间相比) 在F列中,我输入了公式=late(A7、D7、E7) 但是,它不能正常工作 function late(rep,asdt,asti) { var asnd=new Date(asdt.getFullYear(),asdt.getMonth(),asdt.getDate(),asti); //var nextday
=late(A7、D7、E7)
但是,它不能正常工作
function late(rep,asdt,asti) {
var asnd=new Date(asdt.getFullYear(),asdt.getMonth(),asdt.getDate(),asti);
//var nextday = new Date(today.getTime()+(10*3600*1000)); //10 hours from now
//var asnd=new Date(asdt.getTime() + (asti*60*60*1000));
if (rep.getTime() > asnd.getTime()){
return ((rep.getTime()-asnd.getTime())/(60*60*1000));
} else { return 0 }
}
它显示错误的分钟数
甚至在他不迟到的时候,它也显示出迟到的分钟数
说明:
你很接近
- 问题在于从毫秒到分钟的转换
60*1000
:
您的代码以小时为单位获得差异。我不知道为什么结果在几个小时内没有差异,但我猜你没有刷新自定义公式
更新:
与OP讨论后,第二个问题是电子表格和脚本之间的时区不同。OP更改了脚本的时区,以匹配电子表格的时区,并且此答案中建议的代码有效
解决方案:
这:
根据我的数据以分钟为单位给出正确的差值:
请注意:
自定义函数/公式的刷新方式与内置google表单公式的刷新方式不同。您需要更改自定义函数中至少一个参数的值才能更新它。您可以找到有关自定义函数的更多详细信息。我发现了问题并进行了更正。但它仍然不起作用。我正在共享具有编辑权限的工作表。目标日期和小时通过查询来自另一张工作表,并通过数组公式通过票证号链接@我发现了问题所在。电子表格的时区为印度,但脚本的时区为GMT-5。时区应该相同。解决方案:切换到传统编辑器,然后转到File=>Project properties,并将时区更改为GMT+5:30印度标准时间。----我完全困惑了。我永远也猜不到!!!谢谢lot@arulselvan很高兴这对你有帮助。
function late(rep,asdt,asti) {
var asnd=new Date(asdt.getFullYear(),asdt.getMonth(),asdt.getDate(),asti);
if (rep.getTime() > asnd.getTime()){
return ((rep.getTime()-asnd.getTime())/(60*1000));
} else { return 0 }
}