【发布时间】:2014-11-16 05:47:55
【问题描述】:
我有一个包含三列的 Google 表格: - 日期和时间(时间戳) - 期间 - 描述
我有一个脚本,当我在“描述”中写一些东西时,会在“日期”中插入此时的日期和时间,以及“持续时间”:
function onEdit(e) {
if(e.source.getActiveSheet().getName() == "Sheet2" ) {
var col = e.source.getActiveCell().getColumn();
if(col == 3 ) {
// I'm in column three
var cellTimeStamp = e.range.offset(0,-2); // First column of the same row
var cellTimeDiff = e.range.offset(0,-1); // Second column of the same row
var cellTimePrev = e.range.offset(-1,-2); // First column of the previous row
var timeTimeStamp = new Date();
var iniTime = cellTimePrev.getValue().getTime();
var finTime = timeTimeStamp.getTime() ;
var timeDiff = String(finTime - iniTime) ;
cellTimeStamp.setValue(timeTimeStamp);
cellTimeDiff.setValue(timeDiff); // [***]
}
}
}
当它在“持续时间”列中执行(作为事件)时,不会出现“HH:mm:ss”格式的内容。
但如果我删除此脚本中的最后一行并在工作表中添加此公式: =A3-A2(在第 3 行) =A4-A3(在第 4 行) ... 然后就可以了。
我想知道如何使用脚本来获得相同的结果。
提前致谢。
【问题讨论】:
-
请注意,持续时间的格式为
[hh]:mm:ss。我不认为这曾经被写下来,我必须通过使用range.getNumberFormat() -
它是 Google 电子表格中的源代码。现在我使用公式(=A4-A3),而不是这个解决方案中的源代码。
-
我的公式仍然减去两个日期时间,但最初我使用
hh:mm:ss格式化输出单元格,只要差值不到一天就可以了。一旦差异超过一天,我必须弄清楚如何显示持续时间。我希望谷歌只记录Range::setNumberFormat()...
标签: date scripting google-apps-script google-sheets