来自Google Forms的时间戳使用getTime()返回NaN



我有一个谷歌表单,它返回对名为"form responses 1"的谷歌电子表格的响应,其中a列是时间戳(在谷歌电子表格单元格中显示为"25/06/2015 21:36:00"),G和I列包含我感兴趣的数值,最后一行没有"值。G列和I列中最后一行值都不是"的行可能不是完全相同的行。

1) 有没有办法不重新定义第11行中的"varlastRow=electroledata.getSheetByName("Form responses 1").getLastRow();"?我发现这一行对于重置varlastRow的定义是必要的。

如果没有它,列I中最后一行的值不是"将是错误的(它从列G的最后一行移动到非"值,而不是从列I的最后一行都向上计数,然后得到下一个非"行)。

2) 我正在为G列和I列的LastNonZeroDate获取一个NaN,我正试图用getTime()函数以毫秒为单位检索它。我该如何补救?

如果我在消息框中检索到"new Date('responsesvalues[lastRow-1][0]')getTime()"的值,它会给我"Thu Jun 25 2015 21:35:59 GMT+0800(HKT)"。

提前感谢您的帮助。

// get the data range
var lastRow = spreadsheet.getSheetByName("Form responses 1").getLastRow();
var responsesvalues = spreadsheet.getSheetByName("Form responses 1").getRange("A1:Q" + lastRow).getValues();
// get the last row in column G with non-zero value and corresponding date
for (; responsesvalues[lastRow - 1][6] == "" && lastRow > 0; lastRow--) {}
var GLastNonZero = responsesvalues[lastRow - 1][6];
var GLastNonZeroDate = new Date('responsesvalues[lastRow - 1][0]').getTime();
// get the last row in column I with non-zero value and corresponding date
var lastRow = spreadsheet.getSheetByName("Form responses 1").getLastRow();
for (; responsesvalues[lastRow - 1][8] == "" && lastRow > 0; lastRow--) {}
var ILastNonZero = responsesvalues[lastRow - 1][8];
var ILastNonZeroDate = new Date('responsesvalues[lastRow - 1][0]').getTime();

如果没有电子表格来测试,这只是一个"应该有效"的尝试

1) 使用一个额外的变量来计算每列的最后一行
我使用i来计算电子表格中最后一行和最后一行之间的差值。.getLastRow()的文档没有说明该值是否为零。因此,脚本中的注释

2) 删除new Date()调用中的引号

// get the data range
var lastRow = spreadsheet.getSheetByName("Form responses 1").getLastRow();
var responsesvalues = spreadsheet.getSheetByName("Form responses 1").getRange("A1:Q" + lastRow).getValues();
var i;
// get the last row in column G with non-zero value and corresponding date
for (i = 0; i <= lastRow; i++) {
    if (responsesvalues[lastRow - 1][6] !== "") {
        break;
    }
}
var GLastNonZero = responsesvalues[lastRow - i - 1][6];     // not sure about the -1
var GLastNonZeroDate = new Date(responsesvalues[lastRow - i - 1][0]).getTime();         // not sure about the -1
// get the last row in column I with non-zero value and corresponding date
for (i = 0; i <= lastRow; i++) {
    if (responsesvalues[lastRow - 1][8] !== "") {
        break;
    }
}
var ILastNonZero = responsesvalues[lastRow - i- 1][8];      // not sure about the -1
var ILastNonZeroDate = new Date(responsesvalues[lastRow - i - 1][0]).getTime();     // not sure about the -1

最新更新