2012-08-14 45 views
0

我是JavaScript和Google Speardsheet中的新成员,我需要一些帮助。 我在google speardsheet中有一个表格,在L列中 - 我有日期。 该表按日期排序,从最旧到最新。如何在某一列中首次显示日期?

现在,我需要2个函数 - 第一个 - 将返回表中存在的最后一个(最新)日期。第二个 - 这将返回第一行,表示最新日期出现在表格中。

我成功地编写了第一个函数(称为:FindLastDate),但是我遇到了第二个函数的问题。 请看看我的代码,并给你的建议是:

function TheFirstRowWithThisDate() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var dataRange = sheet.getDataRange().getValues(); 
    var i = 0; 
    var a = 0; 
    d = FindLastDate(); 
    while (a==0) { 
    if (dataRange[d][11]==dataRange[i][11]) 
    { var a=i 
    } 
    i=i+1; 
    } 
    return a 
    } 
+0

你真的需要这些作为GAS功能吗?电子表格中的本地函数将执行此操作,对于最近的日期= MAX(L:L),对于行号,= MATCH(MAX(L:L),L:L,0) – DavidF 2012-08-15 05:18:12

回答

0

日期是棘手的处理,因为很多原因 - 电子表格单元格的格式,电子表格的时区和脚本都发挥作用。

因此,根据您的要求,我会以艰难的方式解析日期。

function TheFirstRowWithThisDate() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var dataRange = sheet.getDataRange().getValues(); 
    var d = FindLastDate(); 
    var lastDate = new Date(d); 
    for(var i = 0 ; i < dataRange.length ; i++){ 
    var tempDate = new Date(dataRange[i][11]); // Col L 
    if(tempDate.getDate() == lastDate.getDate() && 
     tempDate.getMonth() == lastDate.getMonth() && 
     tempDate.getFullYear() == lastDate.getFullYear()) { 
     return (i+1); // Return the row number which is 1 more than the index 
    } 
    } 
    return 0; 
} 
相关问题