2012-11-14 68 views
0

此函數似乎不會被觸發,直到單元退出爲止,因爲我得到的值是變更後的值。我需要預先更改的值,但如果實際上編輯了特定的列,我只需要它。如何在Google電子表格中更改單元格之前獲取單元格的值?

謝謝

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    var r = s.getActiveCell(); 
    var columnNum = r.getColumn(); 
    var msg; 

    if (columnNum == 11) { 

    var dateCell = s.getRange(r.getRow(), 11); 
    var v=dateCell.getValue(); 
    msg = 'Value= ' + v; 
    Browser.msgBox (msg); 

    //dateCell.setValue(v); 

    } 
} 

回答

0

據我所知,捕獲單元格的值之前編輯還是不可能的。

您可能會喜歡明星this issue on the issue tracker;目前它被視爲中等優先級的增強請求。

0

@AdamL有沒有辦法以編程方式訪問電子表格修訂歷史記錄?

對不起,這超出了我的noob能力,但我的問題可能爲解決A B的問題提供線索。

@A B另一種可能的解決方法 您可以設置基於時間的觸發器來填充2個數組。 1數組從列中的當前數據檢查編輯,以及來自相同數據的先前快照的1個數組。然後通過使用一個循環來測試自上一次觸發事件以來是否有值發生了變化,您可以確定哪些值已更改(如果有)如果您測試的值已更改,請將rowNumber()和colNumber()將相同數據的前一個和當前實例的getValue()添加到新數組中,還包括一個時間戳new Date()。讓這個新的數組數據填充一個新的工作表或電子表格。

如果與您的onEdit函數一起使用,您將能夠看到之前和之後的值更改以及它們出現的大致時間。

基於時間的觸發器可設置爲每分鐘運行一次,每小時一天等。

相關問題