2017-09-08 2 views
0

제목은 그것을 아주 잘 요약합니다. 문서의 셀이 마지막으로 업데이트 된 시간을 반영하기 위해 내 문서 셀이 필요합니다. now()는 시트가 평가 될 때마다 평가되므로 아무 것도 변경되지 않더라도 "= now()"는 작동하지 않습니다. 즉, 브라우저의 다시로드 버튼을 누르는 간단한 동작조차도 now()가 셀을 업데이트합니다 (TWICE!시트를 편집 할 때만 평가되는 Google 스프레드 시트 수식이 있습니까?

스크립트에서 onEdit 트리거를 사용하지 않으려 고합니다. 그 스크립트를 1000+ 시트에 추가해야하기 때문입니다. 이미 파이썬 시트 API를 통해 문서를 편집 할 수있는 방법이 있으므로 필요할 때마다 자동으로 표현식을 추가하는 것이 매우 쉽습니다.

답변

0

휘발성 스프레드 시트 기능은 명시된 이유로 타임 스탬프에 적합하지 않습니다.

트리거를 사용하십시오. 각 시트에 스크립트를 추가 할 필요가 없습니다. 단일 독립 실행 형 Google Apps Script는 forSpreadsheet(key) method을 사용하여 여러 스프레드 시트에 대해 "수정 중"트리거를 자동으로 설치할 수 있습니다. 예 :

var ids = ['ss_id1', 'ss_id2', ... ]; // array of spreadsheet IDs 
for (var i = 0; i < ids.length; i++) { 
    ScriptApp.newTrigger('timestamp').forSpreadsheet(ids[i]).onEdit().create(); 
} 
function timestamp(e) { 
    e.source.getActiveSheet().getRange(1, 1).setValue(new Date()); 
} 

지금, 나열된 스프레드 시트 중 하나가 편집 될 때마다, 셀 안에 편집 된 시트의 A1은 편집의 시간이있을 것이다.

current limitations이 스크립트 당 사용자 당 20 개의 트리거로 인해 1000 개의 트리거에는 작동하지 않습니다. 스트레칭이지만 관리가 가능한 독립 실행 형 스크립트 50 개가 필요합니다.


또 다른 대안은 (드라이브 앱을 사용하여) 디렉토리에 스프레드 시트의 "마지막으로 수정 한"날짜를 검색하고 스프레드 시트 사람들을 편집 예약 된 Google 애플리케이션 스크립트를 실행하는 것입니다.

또 다른 하나는 포기합니다. 어쩌면 스프레드 시트 인터페이스에서 이미 사용할 수있는 정보를 보유 할 셀이 필요하지 않을 수도 있습니다.

관련 문제