2012-08-02 4 views
0

지금까지는 Google 스프레드 시트가 셀 범위 잠금을 허용하지 않지만 대신 잠금은 전체적으로 시트 단위로 수행되어야합니다. 다른 사용자와 시트를 공유하고 시트 1에 데이터를 입력하게하고 싶습니다. 조작을 방지하기 위해 시트 1에 마지막으로 변경된 타임 스탬프로 시트 2에 복제 된 데이터를 저장하고 싶습니다. 이 onEdit() 함수로 놀았지만 시트 1을 편집 할 때 업데이트 된 시간을주지는 않지만 시트 2를 편집하는 경우에만 여전히 업데이트됩니다. 내가 잘못한 것을 알아 내지 못했습니다.다른 시트를 기반으로 한 onEdit 타임 스탬프

function onEdit(e) 
{ 
    var ss = e.source.getActiveSheet(); 
    var rr = e.source.getActiveRange(); 

//comment 2 lines below if you want it working on all sheets, not just on 2nd one 
    if(ss.getIndex()!= 2) 
    return; 
/// 
    var firstRow = rr.getSheetByName(Sheet2).getRow(); 
    var lastRow = rr.getSheetByName(Sheet2).getLastRow(); 

//the last modified date will appear in 12th column 
    for(var r=firstRow; r<=lastRow; r++) 
    ss.getRange(r, 12).setValue(new Date()); 
} 

내가 할 수있는 다른 방법이 있습니까?

답변

0

그는 도구> 스크립트 편집기로 이동하여 이 유휴 상태가되도록 스크립트를 편집 한 다음, Sheet1을 편집 한 다음 스크립트를 복원 할 수 있기 때문에 다른 사용자가 위조하지 못하도록 스크립트를 사용할 수 없습니다. 이 문제는 the issue tracker을 참조하십시오. 스크립트 이 스프레드 시트의 하나 이상의 워크 시트를 공유하는 다른 사용자에 의해 편집되지 않도록 보호 할 수 없습니다.

반면 스크립트를 옆에두면 언제든지 편집자의 기록을 볼 수 있습니다. 파일> 업데이트 내역보기.

0

몇 가지 문제점이 있습니다. 먼저 .getSheetByName()을 범위 개체에 사용하려고 시도하지만 해당 메서드는 스프레드 시트 개체에서만 지원됩니다. 둘째, 서식 지정 : GAS는 iffor 함수에 {}이 있어야 함을 의미하는 표준 Javascript가 필요합니다. 범위는 .getSheet()이고 범위는 시트를 반환합니다. 이것은 당신이 원하는 것을 위해 일해야

onEdit(e){ 
if(e.range.getSheet().getSheetName()!="Sheet2"){ 
var row1=e.range.getRow(); 
var col2=e.range.getColumn(); 
var row2=e.range.getLastRow(); 
var col2=e.range.getLastColumn(); 
var data=e.range.getValues();//the data to be copied 
var copySheet=e.source.getSheetByName("Sheet2");//sheet you want to copy to 
var copyRange=copySheet.getRange(row1,col1,row2-row1,col2-col1);// the range data will be copied to 
var time=new Date(); 
var timeRange=copySheet.getRange(row,col);//wherever you want the time signature to be. 
timeRange.setValue(time);//inserts time stamp into sheet 
copyRange.setValues(data);//copies data to the range 
} 
} 

그냥 당신이에 시간을 배치 할 행과 열이 rowcol를 교체하십시오. 편집 된 범위가 시트 2의 동일한 위치로 복사되므로 시트 1 만 편집 할 수있는 경우에만 작동합니다. 그렇지 않으면 중복되는 데이터로 끝날 것입니다. 범위에 맞게 타임 스탬프를 설정할 수도 있습니다. 즉, 위치를 (row1,col2+5)과 같이 지정하십시오. 그러면 편집 된 범위의 오른쪽에 5 개의 열이 표시됩니다.