2017-03-14 60 views
1

我从不同的帖子中获得了这两个脚本,并且我在合并它们时遇到了问题。将两个脚本组合成一个Google表格

如果状态列在Sheet1中更改并且其他脚本生成记录所做更改的更改日志,则短脚本将插入时间戳记。是否有可能将这两个合并为一个,并且可能编辑更改日志以仅记录编辑状态列的时间?

在此先感谢!

谷歌电子表格:https://docs.google.com/spreadsheets/d/1m61JTFIacGifU-UD9yIzXdhAYKiiZHN3PooyifRHVf0/edit?usp=sharing

时间戳脚本:

`function onEdit(e) { 
    var sheet = e.source.getActiveSheet(); 
    if (sheet.getName() == "Sheet1") { 
    var r = e.source.getActiveRange(); 
    if (r.getColumn() == 3) { 
     sheet.getRange(r.getRow(),r.getColumn()+1).setValue(new Date()); 
    } 
    } 
} 

`

更新日志脚本:

function onEdit() { 
    // This script records changes to the spreadsheet on a "Changelog" sheet. 
    // The changelog includes these columns: 
    // "Timestamp", "Sheet name", "Cell address", "Column label", "Row label", "Value entered" 
    // Version 1.1, written by --Hyde, 30 July 2014 
    // See https://productforums.google.com/d/topic/docs/7CaJ_nYfLnM/discussion 

    // edit the following lines to suit your needs 
    // changes are only recorded from sheets listed below 
    // escape regular expression metacharacters as in \. \$ \+ \* \? \(\) \[ \] 
    // see http://en.wikipedia.org/wiki/Regular_expression 
    // use '.+' to include all sheets 
    var sheetsToWatch = ['outcome overview', 'Sheet1', 'Another sheet']; 
    // name of the sheet where the changelog is stored 
    var changelogSheetName = "Changelog"; 

    var timestamp = new Date(); 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
    var cell = sheet.getActiveCell(); 
    var sheetName = sheet.getName(); 

    // if it is the changelog sheet that is being edited, do not record the change 
    if (sheetName == changelogSheetName) return; 

    // if the sheet name does not appear in sheetsToWatch, do not record the change 
    var matchFound = false; 
    for (var i = 0; i < sheetsToWatch.length; i++) { 
    if (sheetName.match(sheetsToWatch[i])) matchFound = true; 
    } 
    if (!matchFound) return; 

    var columnLabel = sheet.getRange(/* row 1 */ 1, cell.getColumn()).getValue(); 
    var rowLabel = sheet.getRange(cell.getRow(), /* column A */ 1).getValue(); 

    var changelogSheet = ss.getSheetByName(changelogSheetName); 
    if (!changelogSheet) { 
    // no changelog sheet found, create it as the last sheet in the spreadsheet 
    changelogSheet = ss.insertSheet(changelogSheetName, ss.getNumSheets()); 
    // Utilities.sleep(2000); // give time for the new sheet to render before going back 
    // ss.setActiveSheet(sheet); 
    changelogSheet.appendRow(["Timestamp", "Sheet name", "Cell address", "Column label", "Row label", "Value entered"]); 
    changelogSheet.setFrozenRows(1); 
    } 
    changelogSheet.appendRow([timestamp, sheetName, cell.getA1Notation(), columnLabel, rowLabel, cell.getValue()]); 
} 

回答

0

尝试重命名你的功能和只添加一个onEdit

function onEdit(e) { 
    myFunction1(e); // call function #1 
    myFunction2(); // call function #2 
}