2012-08-14 47 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; 
} 
相關問題