Google脚本可以从电子表格中的单元格区域获取小时+分钟

时间:2014-09-22 13:38:12

标签: google-apps-script google-sheets

我正在尝试创建一个Google脚本,以便从一系列单元格中获取小时和分钟,然后将它们添加为总分钟数。 但是我在网上找到的所有例子都没有完成任何事情来完成任务,我在检查API时没有找到任何帮助。

所以我想说我有一些像这样的细胞:

|   |    A     |    B     |    C     |    D     |
| 1 | 08:01:00 | 07:57:00 | 06:33:00 | 08:08:00 |

我如何获得会议纪要? 我正在考虑将范围作为函数的参数给出,在本例中为x(A1:D1)

修改: 为了澄清:我想向函数发送一系列单元格坐标。从每个单元格,我想得到总的持续时间,以分钟为单位。所以有两个单元'08:00:00'和'07:30:00'我应该得到930。

2 个答案:

答案 0 :(得分:0)

这应该是相当简单的使用JavaScript日期方法,我尝试使用getTime()返回毫秒并将结果值除以60000得到分钟但测试不起作用所以我使用了不同的方法。 / p>

下面的代码(如果你没有秒数,只有几小时和几分钟的数据,它就有效)

function test(){
  var sh = SpreadsheetApp.getActiveSheet();
  var range = sh.getRange('A1:D1');// value used for test, change to your use case
  var minutes = totalMinutes(range);
  Logger.log(minutes);
}

function totalMinutes(range){
  var data = range.getValues();
  var total = 0;
  for(var n in data[0]){
    var min = data[0][n].getMinutes()+60*data[0][n].getHours();
    total+=min
  }
  return total;
}

使用您的示例

enter image description here

它返回

enter image description here


上次编辑(以及跟进问题):

您没有提到您将此作为自定义功能使用...现在我在您的工作表上测试了它我实际上可以看到问题! (但不知道它来自哪里......)“解决方案”(我应该说“解决方法”)很简单,只需加1分钟值,结果是正确的但问题会变得不同:

当修改源范围中的一个单元格时,此自定义函数不会更新结果!!!

例如:

cell A1 = 20, cell A2 = 20, custom function result is 40

现在,当我将A1更改为10时,结果始终为40 ,无论我做什么......

这真的很奇怪......

有关信息,以下是作为自定义函数的代码:

function myMinutes(cells){
  var range = SpreadsheetApp.getActiveSheet().getRange(cells);
  var data = range.getValues();
  var total = 0;
  for(var cell in data[0]){
    var hourtomin = data[0][cell].getMinutes()+1;
    var min = 60*(data[0][cell].getHours());
    total += hourtomin + min;
  }
  return total;
}

如果有人能解释???我没有。

我从不使用自定义函数,因为我不喜欢它们,这种行为不会让我改变主意......; - )

答案 1 :(得分:0)

我找到另一种方法来获得范围内的总和

=arrayformula(sumproduct(HOUR(A1:D1))*60+sumproduct(minute(A1:D1)))