2014-12-18 3 views
0

안녕하세요 다른 셀을 편집 할 때 셀 값을 변경하려고합니다. 그것은 실제로 작동하지만 내가 쓸 셀이 비어있을 때만 작동합니다. 코드는 다음과 같습니다.비어 있지 않은 셀에 값을 설정하는 방법

function onEdit(e){ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var sheetName = sheet.getName(); 

    if (sheetName == 'Functional Tests') { 
    Logger.log('You are in Functional Tests'); 

    var activeCell = sheet.getActiveCell(); 
    Logger.log('Active cell: ' + activeCell.getColumn()); 

    if (activeCell.getColumn() == 5) { 
     Logger.log('Your are working on result column'); 

     var rowIndex = activeCell.getRowIndex(); 

     var resultRange = sheet.getRange("E:E"); 
     var resultCol = 6; //resultRange.getColumn(); 
     var resultCell = sheet.getRange(rowIndex, resultCol); 

     Logger.log('Row index: ' + rowIndex + ' Result col: ' + resultCol); 

     var date = Utilities.formatDate(new Date(), 'GMT+1', 'dd/MM/yyyy HH:mm'); 
     resultCell.setValue(date); 

    } 
    } 
} 

누군가가 그 문제를 해결하는 방법을 알고 있습니까? 미리 감사드립니다.

답변

1

문제점을 재현 할 수 없습니다. 하지만 스프레드 시트 (getColumn, getActiveCell, ..)에 대한 호출은 eventobject (e)의 매개 변수로 모두 전달되었으므로이 호출의 대부분을 제거 할 수 있습니다. 그래서 이런 걸해야한다 (도) 일 :

function onEdit(e) { 
if(e.source.getActiveSheet().getName() !== 'Functional Tests' || 
e.range.columnStart !== 5) return; 
e.range.offset(0, 1).setValue(Utilities.formatDate(new Date(), 'GMT+1', 'dd/MM/yyyy HH:mm')) 
} 

어쩌면 당신이 formatDate (초)을 사용하지 않기 때문에 타임 스탬프가 업데이트되지 않습니다 생각을? 따라서 분 이내에 변경 사항이 반영되지 않습니다. HH : mm : ss 형식으로 확인한 다음 변경 사항을 확인하십시오.

관련 문제