如何从表格中计算谷歌应用脚​​本中的持续时间?

时间:2014-05-23 17:36:20

标签: javascript arrays google-apps-script google-sheets

感谢您提出我的问题。对我而言,我所做的应该是非常简单。我是编程的初学者,所以我不知道我需要做什么才能完成。我需要帮助。

问题: 我必须有4列。 (Travelto,Arrive,Depart,Travelfrom)我不总是使用所有这些,所以我的脚本必须认识到我想要某些值基于连续的哪些单元格是空白的或哪些有内容。我已经尝试在电子表格上使用isblank()来确定二进制数,然后我将其转换为小数。我喜欢我的脚本,所以我不必在谷歌工作表中添加另一栏。我想我会使用一个数组,然后检查数组中的每个元素是否为空,然后将该数组中的每个元素乘以1,这样它现在是一个数字而不是一个布尔值。然后我想获取数组的元素并将它们转换为单个二进制数并将其转换为十进制数以提供给我的开关案例,其中将包含计算小时数的正确方法并以小数形式返回小时数以便它应该形成如1.75的1小时45分钟。它返回的值必须能够求和,这样函数才能返回一个字符串。我也更喜欢输出2位小数。

我试图弄清楚如何在Google的应用脚本中计算时间。我的成功有限。我的脚本输出无法理解它是如何得到答案的。这可能是因为我无法弄清楚如何判断脚本的时间。它看到13:00:00,0.5416667,还是完全不同的东西?我似乎无法弄明白。

我想从google工作表电子表格中传递两个值,这些值在视觉上按时间格式化,然后将这两个值从另一个中减去一个并获得它们之间的时间量,持续时间以便我知道多少小时已经工作过。

function worked(time1,time2)       //pass 2 time values to function
{                                  //Start of the function
var time1;                         //declare time1 variable
var time2;                         //Declare time 2 variable
var outnumber = time1-time2;       //Declare outnumber and subtract time1 from time2
return outnumber                 //return the difference of time1 and time2
}

这是指向我的工作表和编辑器中包含的代码的链接。有链接的任何人都可以发表评论 https://docs.google.com/spreadsheet/ccc?key=0Ar4A89ZoxmJCdHBFR0VCblVtWUVvR3hFbTdlcjdKNUE&usp=sharing

请告诉我我做错了什么或者根本没做什么来完成这项工作。 谢谢 Goldenvocals369

2 个答案:

答案 0 :(得分:2)

您看到的输出数字是以ms为单位的差异。您需要将ms转换为您想要的格式。

我在这里找到了一个简洁的方法:https://coderwall.com/p/wkdefg

您的代码看起来像这样。

function worked(time1,time2)      
{                                 
var time1;
var time2;
var outnumber = time1-time2;  
  return msToTime(outnumber) 
}

function msToTime(duration) {
    var milliseconds = parseInt((duration%1000)/100)
        , seconds = parseInt((duration/1000)%60)
        , minutes = parseInt((duration/(1000*60))%60)
        , hours = parseInt((duration/(1000*60*60))%24);

    hours = (hours < 10) ? "0" + hours : hours;
    minutes = (minutes < 10) ? "0" + minutes : minutes;
    seconds = (seconds < 10) ? "0" + seconds : seconds;

    return hours + ":" + minutes + ":" + seconds;
}

答案 1 :(得分:0)

您可以使用this功能。该函数的文档是:

  

返回范围中左上角单元格的显示值。该   value将是String类型。显示的值会考虑在内   日期,时间和货币格式格式,包括格式   由电子表格的区域设置自动应用。空单元格   将返回一个空字符串。