2014-12-07 69 views
0

我目前正在爲電子表格編寫腳本。編輯範圍時的Google腳本返回日期

希望的行爲:編輯單元格F-I時,應在相應行的單元格L中返回最近編輯的日期。

我發現了兩個代碼示例,第一個在行中的ANY字段被編輯時返回單元格L中的日期。這種行爲是可以接受的,但不理想,因爲它適用於任何山坳

function onEdit() { 
var s = SpreadsheetApp.getActiveSheet(); 
var r = s.getActiveCell(); 
if(r.getColumn() != 2) { 
    var row = r.getRow(); 
    var time = new Date(); 
    time = Utilities.formatDate(time, "GMT-05:00", "yyyy-MM-dd"); 
    SpreadsheetApp.getActiveSheet().getRange('L'+row.toString()).setValue(time); 
    }; 
}; 

第二應日一個單元返回編輯欄的右側。這種行爲是不希望的,因爲它可能會覆蓋其他重要的數據。

function onEdit(e) { 
var s = SpreadsheetApp.getActiveSheet(); 
var cols = [1, 7, 13, 19, 25, 31] 
if (s.getName() !== "Sheet1" || cols.indexOf(e.range.columnStart) == -1) return; 
s.getRange(e.range.rowStart, e.range.columnStart + 1) 
    .setValue(new Date()); 
}; 

任何幫助或建議編輯這些行爲更貼近預期的結果將不勝感激。謝謝!

回答

0

像這樣的東西應該工作:

function onEdit(e) { 
var ss = e.source.getActiveSheet(); 
var watchedCols = [6, 7, 8, 9] 
if (watchedCols.indexOf(e.range.columnStart) === -1) return; 
ss.getRange(e.range.rowStart, 12) 
    .setValue(e.value ? Utilities.formatDate(new Date(), "GMT-05:00", "yyyy-MM-dd") : null) 
} 

需要注意的是,該腳本將在你的谷歌電子表格的每片工作。如果你想將其限制在只有一張的(?,也排除在第一行的編輯(頭)),你可以嘗試這樣的事:

function onEdit(e) { 
var ss = e.source.getActiveSheet(); 
var watchedCols = [6, 7, 8, 9]; 
var watchedSheet = 'Sheet1'; //change name if needed 
if (watchedCols.indexOf(e.range.columnStart) === -1 || ss.getName() !== watchedSheet || e.range.rowStart < 2) return; 
ss.getRange(e.range.rowStart, 12) 
    .setValue(e.value ? Utilities.formatDate(new Date(), "GMT-05:00", "yyyy-MM-dd") : null) 
} 

希望幫助?

+0

完美無瑕!謝謝你的幫助。 – bbcountach 2014-12-07 18:53:53

+0

不客氣,bbcountach! – JPV 2014-12-07 18:54:45