Google apps script 时间算术计算误差
我在gsheet上有以下代码-Google apps script 时间算术计算误差,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我在gsheet上有以下代码- var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var task = ss.getRange(1,2).getValue(); //ss.getRange("A2").getValue(); var date = new Date(); function onEdit(e) { if (e.range.getA1Notation() == 'B2') { if (/^\
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var task = ss.getRange(1,2).getValue(); //ss.getRange("A2").getValue();
var date = new Date();
function onEdit(e) {
if (e.range.getA1Notation() == 'B2') {
if (/^\w+$/.test(e.value)) {
// console.log(e.value);
eval(e.value)();
e.range.clear();
}
}
}
function Start() {
var last = ss.getLastRow();
ss.getRange(last+1, 1).setValue(task);
ss.getRange(last+1, 2).setValue(date);
}
function End() {
var last = ss.getLastRow();
ss.getRange(last, 3).setValue(date);
var endTime = ss.getRange(last, 3).getValue();
var startTime = ss.getRange(last, 2).getValue();
ss.getRange(last, 4).setValue(endTime-startTime);
}
每当编辑B2中的单元格时,它都会运行其中一个已验证的函数名称-开始或结束
如果“开始”,则将单元格b1(已验证的任务名称列表)的值放在第一列,当前时间以MM/DD/YYYY HH:MM:SS格式显示
如果“结束”,则在第三列中以MM/DD/YYYY HH:MM:SS格式显示当前时间,并尝试在第四列中显示“开始”时间和“结束”时间之间的差值,或进行计算
这里是错误(或者我不了解gsheets是如何工作的)
该代码生成以下内容:
Task| Start | End | Duration
DOS | 8/2/2017 16:44:28 | 8/2/2017 16:44:31 | 2,418.00
问题-什么是2418?总持续时间应为2秒或00:00:02。鉴于上述代码,这是代码问题还是单元格问题的格式?
当我放入单元格d2=c2-b2时,只要将列格式化为持续时间,它就可以正常工作。但我不想这样做,因为插入或开始/结束时间取决于最后一行-因此,如果我将公式复制/粘贴到gsheet的底部,数据将不连续。JavaScript时间戳以毫秒为单位。除以1000得到秒 另外,像您这样使用
eval
似乎是一个非常糟糕的主意。如果输入的函数不是选项之一,我会在那里使用开关语句,并为用户显示一个错误。照现在的情况,如果代码输入“stat”而不是“start”,那么代码会自动失败