我正在尝试创建一个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。
答案 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;
}
使用您的示例
它返回
您没有提到您将此作为自定义功能使用...现在我在您的工作表上测试了它我实际上可以看到问题! (但不知道它来自哪里......)“解决方案”(我应该说“解决方法”)很简单,只需加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)))