Як я можу автоматично встановити "останню оновлену" клітинку в рядку Електронні таблиці Google Документів?


21

Як я можу автоматично встановити "останню оновлену" клітинку в рядку Електронні таблиці Google Документів?

Я хочу створити стовпчик, у якому значення клітинок буде автоматично встановлено, коли цей рядок востаннє змінено. Чи можливо це? Як це зробити / який варіант використовувати для встановлення цього?

Я бачу вирішення для MS Excel, але я думаю, що в Google Документах має бути щось подібне, правда? (схрещені пальці)

У нас багато людей, що редагують великий аркуш. Ми можемо побачити історію редагувань, але було б приємніше, якби у нас був стовпець "останніх оновлених" дат.


Ти намагався? Якщо це працює, будь ласка, позначте як такий, дивіться webapps.stackexchange.com/faq#howtoask .
Яків Ян Туінстра

Відповіді:


20

Ви можете спробувати додати сценарій Google Apps для зйомки під час редагування комірки та додавання часової позначки до іншої комірки. Ось попередня відповідь, схожа: Часова позначка Google Spreadsheet?

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 13 ) { //checks the column
     var nextCell = r.offset(0, 1);
     if( nextCell.getValue() === '' ) //is empty?
       var time = new Date();
       time = Utilities.formatDate(time, "GMT", "HH:mm:ss");
       nextCell.setValue(time);
   };
 };
}

добре виглядає, я спробую це
cwd


14

=iferror(A1+B1+C1+D1+J1+K1+L1+"x",today())всякий раз, коли комірки ряду змінюють формулу, повторно обчислює. з рівнянням "х" це гарантує помилку. який взамін повертає дату.


5
Це цікава клуба.
але

1
Найкрасивіше рішення, яке я коли-небудь бачив :)
mafonya

5
Наскільки я можу сказати, це насправді не працює. Щоб було зрозуміло, вона працює, але вона не оновлюється для конкретних рядків. Коли я вкладаю це і перетягую його через декілька рядків, а потім редагую будь-що в будь-якому місці аркуша, усі рядки перераховуються та оновлюються.
nhgrif

1
Оце Так! Це працювало для мене. Ось скорочена версія: = iferror (SUM (A2: O2) + "x", сьогодні ()) та перетягування автоматично оновлених номерів рядків.
Ілля Євдокимов

1

Це мій сценарій, в останню колонку помістіть цю інформацію:

  1. Вставити до комірки (в останній комірці = останній стовпчик для рядка, який ви змінюєте) - Дата в GMT -3, якщо ви хочете помістити те саме в іншій TZ, просто змініть -3 для вашого паралельного часового поясу. Якщо ви хочете автоматично вказати дату в стандартному TZ, просто змініть це:

    var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    to
    var date = Utilities.formatDate(new Date());
    
  2. Вставте коментар до Cell + Користувача, який його модифікував.

  3. Під час оновлення з’являється спливаюче вікно. Показувати лише ActiveUser.

    function onEdit(event)
    {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var actSht = event.source.getActiveSheet();
        var actRng = event.source.getActiveRange();
    
        var index = actRng.getRowIndex();
        var dateCol = actSht.getLastColumn();
        var lastCell = actSht.getRange(index,dateCol);
        var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    
        lastCell.setValue(date);
        lastCell.setComment("Ultima Modificacion: " + actRng.getA1Notation() +' por '+Session.getActiveUser());
        ss.toast('Ultima Modificacion = '+ actRng.getA1Notation()+' por '+Session.getActiveUser());
    }
    

1

Я створив функцію, яка записує нову дату, коли змінена посилальна комірка. У цьому випадку значення комірки є TRUE або FALSE, але ви можете редагувати його на будь-яке значення.

function WhenUpdated(cell1) {
  if(cell1){
    return new Date();
  }
  else return null;
}

1

Ось версія, яка знаходить стовпець за допомогою заголовка, а не жорсткого кодування номера стовпця та використовує власний часовий пояс:

function updateModified(options) {
  var sheet = SpreadsheetApp.getActiveSheet();
  if (options.sheetName && sheet.getName() != options.sheetName) {
    return;
  }

  var modifiedColumnName = options.modifiedColumnName || 'Modified';
  var header = sheet.getDataRange().offset(0, 0, 1).getValues()[0];
  var modifiedColumn;
  for (var i=0; i < header.length; i++) {
    if (header[i].trim() == modifiedColumnName) {
      modifiedColumn = i + 1;
      break;
    }
  }
  if (typeof modifiedColumn != 'number') {
    throw new Error("Can't find column with name: " + modifiedColumnName);
  }

  var activeCell = sheet.getActiveCell();
  if (activeCell.getColumn() == modifiedColumn) {
    return;
  }

  var modifiedCell = sheet.getRange(activeCell.getRow(), modifiedColumn);
  var formattedDate = Utilities.formatDate(new Date(), "America/Los_Angeles", "M/dd/yy HH:mm");
  modifiedCell.setValue(formattedDate);
}

function onEdit() {
  updateModified({sheetName: 'Jobs'});
}

Щоб використовувати UTC, просто змініть часовий пояс на UTC.


-4

Просто введіть "Останнє оновлення:" в одну клітинку та введіть "= now ()" у комірку поруч із нею! Це повинно зробити роботу!


1
Це буде працювати лише на клітинку, а не на рядок, як зазначено у питанні
1owk3y
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.