Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 时间算术计算误差_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 时间算术计算误差

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 (/^\

我在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 (/^\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”,那么代码会自动失败