【发布时间】:2023-03-12 22:26:01
【问题描述】:
编辑:2020.07.24。 这是一个电子表格,您可以在其中看到我的问题。 https://docs.google.com/spreadsheets/d/1-knADrKsStLz5lS_9gayHpZFcaZPsEbBMmrpOGXGMqg/edit?usp=sharing
我有一个电子表格(我不能分享),用脚本制作了我自己的自定义函数。
=cutomF(A1,A2,A3)
A1 = 8:00 (1899.12.30.08:00)
A2 = 16:00 (1899.12.30.16:00)
A3 = 05:00 (1899.12.30.05:00)
在脚本中,如果我只用其中两个时间(如 A2-A1)进行计算,它会返回一个正确的数字,我需要除以 /1000/60/60/24
但如果我想计算这个:A2-A3-A1 它只会返回极端错误的数字。
有什么问题吗?
编辑: 代码从我的语言稍微改写为英语......
在电子表格单元格中有这样的时间内容 08:00;
我想存档类似工人之间的比较。
function CUSTOM_WORK_TIME(ROW_DATA,DAY,KM,ADDRESS,AVERAGE_KM,AVERAGE_ADDRESS,AVERAGE_TIME){
if(ROW_DATA[0][0]!=""){
Utilities.sleep(50);
var WORK_TIME;
var WORK_OVERTIME;
var WORK_TIME_WEEKEND = ((ROW_DATA[0][2]-ROW_DATA[0][1])/1000/60/60/24);
var return_array = [[]];
var KM_RATE = ((KM/AVERAGE_KM)*0.33);
var ADDRESS_RATE = ((ADDRESS/AVERAGE_ADDRESS)*0.33);
var TIME_RATE = ((ROW_DATA[0][2]-ROW_DATA[0][1])/AVERAGE_TIME)*0.34;
var PRINT_THIS;
PRINT_THIS = (ROW_DATA[0][2]-ROW_DATA[0][1])/1000/60/60/24; // JUST FOR TESTING
switch (ROW_DATA[0][0]){
case "TRANSPORT":
if(ROW_DATA[0][2]!="" && ROW_DATA[0][1]!=""){
Utilities.sleep(100);
if(DAY=="SATURDAY" || DAY=="SUNDAY"){
return_array[0][0] = "";
return_array[0][1] = "";
return_array[0][2] = WORK_TIME_WEEKEND;
return return_array;
}else{
Utilities.sleep(200);
WORK_TIME = ((ROW_DATA[0][2]-ROW_DATA[0][1])/1000/60/60/24);
if(WORK_TIME >(9/24)){
WORK_OVERTIME = (((ROW_DATA[0][2]-ROW_DATA[0][1])/1000/60/60/24) - (9/24))*(TIME_RATE+KM_RATE+ADDRESS_RATE);
WORK_TIME = (9/24);
return_array[0][0] = WORK_TIME;
return_array[0][1] = WORK_OVERTIME;
return_array[0][2] = "";
return return_array;
// return PRINT_THIS;
}else{
return_array[0][0] = WORK_TIME*(TIME_RATE+KM_RATE+ADDRESS_RATE);
return_array[0][1] = "";
return_array[0][2] = "";
return return_array;
}
}
}else{return "H";}
break;
default:
break;
}
}
}
【问题讨论】:
-
显示你的脚本。
-
嗨。你的预期结果是什么?内置日期减法 (
=A2-A3-A1) 不起作用怎么办? (它适用于我的工作表,使用您的时间值。)您可以发布cutomF的代码吗? (可能是customF的错字?) -
如果你的函数是
CUSTOM_WORK_TIME(ROW_DATA,DAY,KM)并且你像=CUSTOM_WORK_TIME(A1,A2,A3)一样使用它,这意味着你想要计算DAY-ROW_DATA-KM?如果不是 - 请显示cutomF的正确代码。 -
做了一张表,看看有什么问题docs.google.com/spreadsheets/d/…
-
我仍然不明白函数
CUSTOM_WORK_TIME的用途(不在您的电子表格中)。你要计算A2-A3-A1吗?所以16:00-05:00-08:00?你期待什么结果?3?
标签: javascript datetime google-apps-script google-sheets google-sheets-custom-function