>

나는 내가 찾고있는 것을 닦고 찾았다. 내가 찾은 것을 약간 수정했으며 작동합니다 ... 대부분. 그러나 C 열의 다른 시트에서 편집하면 DATA 시트의 onedit ()가 실행됩니다. 나는 그것을 원하지 않으며 그것을 멈출 수 없습니다.

'데이터'시트 만 모니터링하고 싶습니다. C3 : C5000 또는 C3 : C + lastrow 범위의 경우 이상적입니다. 행이 5000 개를 넘지 않아야합니다.

function onEdit(e) {  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var data_sheet = ss.getSheetByName("Data");
  var editRange = ss.getActiveRange();
  var editRow = editRange.getRow();
  var editCol = editRange.getColumn();
  var range = data_sheet.getRange("C3:C5000");
  var rangeRowStart = range.getRow();
  var rangeRowEnd = rangeRowStart + range.getHeight();
  var rangeColStart = range.getColumn();
  var rangeColEnd = rangeColStart + range.getWidth();
  if (editRow >= rangeRowStart && editRow <= rangeRowEnd 
      && editCol >= rangeColStart && editCol <= rangeColEnd)
  {
    RefreshImport2();
   }
}

  • 답변 # 1

    이벤트 오브젝트 e 를 사용하여 편집 할 여러 정보를 검색 할 수 있습니다.  와이즈 비츠 . 이벤트 객체에 대한 자세한 정보는 여기에 있습니다. 이 샘플 스크립트는 어떻습니까? 이 샘플에서는

    스프레드 시트에서 셀을 편집 할 때 시트 이름, 열 및 행이 onEdit(e) 인 경우 Data  그리고 C 각각 3 <= row <= 5000  실행됩니다.

    샘플 스크립트 :

    RefreshImport2()
    
    

    질문을 잘못 이해하면 죄송합니다.

    편집 :

    if 문을 하나 더 추가하면됩니다. 첫 번째 if 문에서 시트 이름이 function onEdit(e) { if ( e.source.getSheetName() == "Data" && e.range.columnStart == 3 && e.range.columnEnd == 3 && e.range.rowStart >= 3 && e.range.rowEnd <= 5000 ) { RefreshImport2(); } } 일 때 사용됩니다. . 두 번째 if 문에서 시트 이름이 Data 일 때 사용됩니다. . 각각의 if 문은 서로 간섭하지 않습니다.

    Data Entry
    
    

    내 이해가 맞습니까?

    function onEdit(e) { if ( e.source.getSheetName() == "Data" && e.range.columnStart == 3 && e.range.columnEnd == 3 && e.range.rowStart >= 3 && e.range.rowEnd <= 5000 ) { RefreshImport2(); } if (e.source.getSheetName() == "Data Entry") { // do something } }

관련 자료

  • 이전 javascript - 클릭 한 버튼의 읽기 값을 반응
  • 다음 ios - iOS12, kReachabilityChangedNotification이 작동하지 않습니다