Google 워드 프로세서 스프레드 시트에서 '마지막 업데이트 된'셀을 자동으로 설정하려면 어떻게해야하나요?


21

Google 워드 프로세서 스프레드 시트에서 '마지막 업데이트 된'셀을 자동으로 설정하려면 어떻게해야합니까?

셀 값이 해당 행을 마지막으로 수정했을 때 자동으로 설정되는 열을 만들고 싶습니다. 이것이 가능한가? 어떻게해야합니까? 이것을 설정하기 위해 어떤 옵션을 사용합니까?

MS Excel에 대한 해결 방법이 있지만 Google Docs에 비슷한 것이 있어야한다고 생각합니까? (손가락을 건) 다)

여러 사람이 큰 시트를 편집하고 있습니다. 개정 내역을 볼 수 있지만 "마지막 업데이트"날짜 열이 있으면 더 좋습니다.


시도 했습니까? 작동하면 webapps.stackexchange.com/faq#howtoask를 참조하십시오 .
Jacob Jan Tuinstra

답변:


20

셀을 편집 할 때 캡처하고 다른 셀에 타임 스탬프를 추가하기 위해 Google Apps 스크립트를 추가 할 수 있습니다. 다음과 유사한 이전 답변이 있습니다 : Google Spreadsheet Timestamp?

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())행의 셀이 변경 될 때마다 수식이 다시 계산됩니다. 방정식에서 "x"를 사용하면 오류가 보장됩니다. 그 대가로 날짜를 반환합니다.


5
흥미로운 kluge입니다.
ale

1
내가 본 가장 아름다운 솔루션 :)
mafonya

5
내가 알 수있는 한, 이것은 실제로 작동하지 않습니다. 분명히하기 위해 작동하지만 특정 행에 대해서는 업데이트되지 않습니다. 이것을 넣고 여러 행을 드래그하여 시트의 아무 곳이나 편집하면 모든 행이 다시 계산되고 업데이트됩니다.
nhgrif

1
와우! 그것은 나를 위해 일했다. 단축 된 버전은 다음과 같습니다. = iferror (SUM (A2 : O2) + "x", today ()) 그리고 자동으로 업데이트 된 행 번호를 끕니다.
Ilya Evdokimov

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 + User와 메모를 삽입하십시오.

  3. 업데이트 할 때 팝업이 나타납니다. 활성 사용자에게만 나타납니다.

    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

한 셀에 "Last updated :"를 입력하고 옆에있는 셀에 "= now ()"를 입력하십시오! 그 일을해야합니다!


1
이것은 질문에 명시된대로 행 단위가 아닌 셀 단위로만 작동합니다.
1owk3y
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.