마지막 수정 날짜를 표시하는 Google 스프레드 시트의 자동 업데이트 열


37

마지막 업데이트의 타임 스탬프를 표시하기 위해 열 2를 자동 업데이트하는 방법을 찾으려고합니다. 나는 문서가 마지막 수정의 타임 스탬프를 보여 주지만 동시에 문서에 액세스하고 조정하는 많은 클라이언트가 있습니다. 그래서이 요청이 접수되었습니다. 코딩을하지 않았다는 것을 인정할 것입니다.

Myanda는 올바른 경로를 따라 보이는 것을 게시했지만 필요에 맞게 구현하는 방법을 모르겠습니다.

Google 스프레드 시트 타임 스탬프?


우리를 문서에 연결하거나 찾고자하는 문서의 예를 제공하면 도움이 될 것입니다. 그에 따라 다른 답변을 수정할 수 있지만 정확히 무엇을 요구하는지 잘 모르겠습니다. 전체 스프레드 시트가 업데이트 된 시간을 나타내는 타임 스탬프로 업데이트 된 단일 셀만 필요합니까?
OnenOnlyWalter

안녕하세요 우리가 찾고있는 것은 열 2에서 각 행의 셀이 업데이트 될 때마다 타임 스탬프로 업데이트됩니다. 문서가 기밀로 유지되어 문서를 게시 할 수 없습니다. 그러나 21 개의 열과 60 개의 행이 있습니다. 도움이 되나요?
RichGonzalez

알겠습니다. 원래 코드를보고 다시 연락 드리겠습니다.)
OnenOnlyWalter

오네 감사합니다!
RichGonzalez 2016 년

답변:


36

좋아, 다음은 이전 답변의 수정 된 코드 버전입니다.

function onEdit(e) {
  // Your sheet params
  var sheetName = "MySheet";
  var dateModifiedColumnIndex = 2;
  var dateModifiedColumnLetter = 'B';

  var range = e.range; // range just edited
  var sheet = range.getSheet();
  if (sheet.getName() !== sheetName) {
    return;
  }

  // If the column isn't our modified date column
  if (range.getColumn() != dateModifiedColumnIndex) { 
    var row = range.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-08:00", "MM/dd/yy, hh:mm:ss");
    var dateModifiedRange = sheet.getRange(dateModifiedColumnLetter + row.toString());
    dateModifiedRange.setValue(time);
  };
 };

이것이하는 일은 변경된 셀의 행을 잡고 해당 특정 행의 두 번째 열에 타임 스탬프를 할당하는 것입니다.

구현하려면 스프레드 시트로 이동하여 Tools>를 클릭하면됩니다 Script Editor. 결과 편집기 페이지에서 여기에 붙여 넣으십시오. 이것은 onEdit()함수 이므로 스프레드 시트의 셀에 다른 것을 추가하지 않고 작동하며 편집기에 붙여 넣어 저장하면됩니다.

타임 스탬프의 경우 형식을 MM / dd / yy로 설정하고 시간을 남겼습니다. 변경하려면의 사용을 변경하면됩니다 Utilities.formatDate.


Onen, 이것은 완벽하게 작동합니다! 정말 고맙습니다!
RichGonzalez 2016 년

1
그것을 듣고 기뻐! 이 답변을 확인 표시로 표시 할 수 있습니까? :) 다른 사람들 이이 솔루션이 작동하는 것을 알 수 있도록하기 위해 있었지만 포인트도
좋았습니다

할 것이다. 확실히 작동합니다. 하나의 후속 질문. 칭찬 할만한 것은 없습니다. PST로 변경해도 태평양 표준시로 변경되지는 않지만 EST가 작동합니다. Java는 PST를 다른 약어로 읽습니다. 그리고 시간을 12 시간 대 군사 시간으로 표시하는 방법이 있습니까?
RichGonzalez 2016 년

1
타임 스탬프가 작동하지 않습니다. 나와 함께 "20yy-MM-dd HH : mm"대신 작동합니다. 나는 'dd; 소문자이거나 작동하지 않아야합니다 (1 월이 아닌 경우 ahahahah가 아닌 경우).
Riccardo

1
"DD"를 사용 .formatDate()하면 "년 중 일"(예 : 12 월 31 일의 365)이 표시됩니다. "dd"가 필요할 수 있습니다. 날짜 형식 값의 전체 목록은 여기에서 확인할 수 있습니다. docs.oracle.com/javase/7/docs/api/java/text/…
Dan Nguyen


4

나는 이것이 여기에 넣기를 바란다. 아래는 위 함수의 수정이지만 열이 아닌 행 (행 9)에 대해 수행합니다. 열 할당을 사용하는 방법을 알아내는 것은 매우 실망 스럽지만 매우 간단했습니다. 원본 코드에 대한 OnenOnlyWalter에 감사드립니다.


function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); // Get spreadsheet name 
    var r = s.getActiveCell(); // store active cell name in current spreadsheet 
  var cell1 = 9 // This is the row I want to put values
  if(r.getRow() != cell1) { // Ignores this row (where I put the dates)
    var column = r.getColumn();  // Get column # from active cell
    var time = new Date(); // Get date and time of last mod
    time = Utilities.formatDate(time, "GMT-08:00", "MM/DD/yy, hh:mm:ss"); // Format date and time
    SpreadsheetApp.getActiveSheet().getRange(cell1,column).setValue(time); // put in time in cell
  };
 };

이것은 나를 위해 아주 잘 작동하는 것 같았습니다. @OnenOnlyWalter의 행 8 오류를 수정 해 주셔서 감사합니다.
Zlatty

사용자 시계가 정확하지 않을 수 있으므로 서버 측의 정확한 타임 스탬프를 얻는 표준 방법이 있습니까?
Sim

@Sim Google Apps Script는 서버 측에서 실행됩니다. 당신이 얻는 시간은 서버에서입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.