Как сделать, чтобы ячейка в строке показывала дату самого последнего редактирования в этой строке - PullRequest
0 голосов
/ 28 февраля 2019

Я работаю в Google Sheets над документом, который будет регулярно посещаться и редактироваться.Я хотел бы, чтобы столбец был помечен как «Дата последнего редактирования» и чтобы каждая ячейка в этом столбце отражала дату каждой последней строки редактирования.Например, если я редактирую информацию в ячейке C3, то я хочу, чтобы ячейка в столбце «Дата последнего редактирования» в строке 3 отражала дату, когда я внес изменение.Я нашел несколько, которые запускаются по столбцам, но они работают только для отдельного столбца.Мне нужно, чтобы он охватывал все ячейки в строке, которые располагаются перед «Дата последнего редактирования».

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

добавьте этот скрипт на свой лист и измените формат и часовой пояс, если вам нужно ("GMT+1", "dd.MM.yyyy"):

function onEdit(event)
{ 

  var sheet = event.source.getActiveSheet();

  // note: actRng = the cell being updated
  var actRng = event.source.getActiveRange();
  var index = actRng.getRowIndex();
  var cindex = actRng.getColumnIndex();

  var dateCol = sheet.getLastColumn();  
  var lastCell = sheet.getRange(index,dateCol);
  var date = Utilities.formatDate(new Date(), "GMT+1", "dd.MM.yyyy");

  lastCell.setValue(date);
}
0 голосов
/ 28 февраля 2019

Этот код обновит C: C с адресом электронной почты пользователя, а D: D - с текущим временем той же строки, если A: B редактируется на вкладке «Ввод данных».Вам нужно настроить триггер onChange (), чтобы он заработал.

function userUpdate() {
    /* 
    Changed the updated by/on to make it faster
    Put in handling to make sure that if they delete a cell, that it only clears out the submitted by/on if ALL the values in A:B are blank
    */

    // Main sheet details
    var s = SpreadsheetApp.getActiveSheet();
    var spreadsheetTimeZone = SpreadsheetApp.getActive().getSpreadsheetTimeZone();
    var lastUpdatedString = Utilities.formatDate(new Date(), spreadsheetTimeZone, "MM/dd/yyyy' 'HH:mm:ss");
    var sessionEmail = Session.getActiveUser().getEmail();

    // Check Sheet
    if (s.getName() == "Data Entry") { //checks that we're on the correct sheet
        var r = s.getActiveCell();
        var row = r.getRowIndex();
        var column = r.getColumn();
        var activeRange = s.getRange("A" + row + ":B" + row);
        //var activeRangeValues = 
        var activeRangeValuesLength = activeRange.getValues().toString().length;

        if (row > 1) {

            // Declare variables

            var cellValue = r.getValue().toString();

            // If the cellValue IS blank
            if (activeRangeValuesLength < 5) {
                sessionEmail = "";
                lastUpdatedString = "";
            }

            //  Update Submitted By / Submitted On
            if (column < 5) {
              var lastUpdatedBy = s.getRange("C" + row)
              lastUpdatedBy.setValue(sessionEmail); // update column C 

              var lastUpdated = s.getRange("D" + row)
              lastUpdated.setValue(lastUpdatedString); // update column D    

            }
        }
    }
...