【发布时间】:2017-12-25 06:17:17
【问题描述】:
以下代码创建一个更改日志表,以跟踪我的团队在 Google 表格的每个单元格中所做的更改。
问题
如何将“编辑者姓名或他的电子邮件”添加到此更改日志?
function onEdit() {
// This script records changes to the spreadsheet on a "Changelog" sheet.
// The change log includes:
// "Timestamp", "Sheet name", "Cell address", "Column label", "Row label", "Value entered"
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 change log 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()]);
}
【问题讨论】:
标签: google-apps-script google-sheets