>source

원본 시트에서 한 셀의 값을 변경할 때 한 시트에서 다른 시트로 데이터를 복사하려고합니다. 나는 내가 뭘 잘못하고 있는지 확실하지 않고 특정 셀을 편집 할 때도 실행하려는 다른 스크립트 에이 문제가 있습니다.

여기에서이 코드를 찾았습니다 (Google Apps Script-데이터를 다른 워크 시트에 복사하고 추가) 수동으로 실행할 때 잘 작동하지만 하나의 셀을 편집 할 때 아무 일도 일어나지 않도록 래핑하면 아래를 참조하십시오.

 if (e.range.getA1Notation() === 'C1'){
 var sss = SpreadsheetApp.openById('1ws8yg5_1k4ZZN2amfZ-cNvY-hUMUDGhbwnNPCGJhlAY'); //replace with source ID
 var ss = sss.getSheetByName('export'); 
 var range = ss.getRange('B3:C8'); 
 var data = range.getValues();
 var tss = SpreadsheetApp.openById('152JxdVi6Ssqz2ZZ65yDW5p5m0PnP63vApNgfP3jS_Pc'); //replace with destination ID
 var ts = tss.getSheetByName('import'); //replace with destination Sheet tab name
 ts.getRange(1, 2, 6,2).setValues(data); //you will need to define the size of the copied data see getRange()
}
}

소스 시트 https://docs.google.com/spreadsheets/d/1ws8yg5_1k4ZZN2amfZ-cNvY-hUMUDGhbwnNPCGJhlAY/edit#gid=0

목적지 시트 https://docs.google.com/spreadsheets/d/152JxdVi6Ssqz2ZZ65yDW5p5m0PnP63vApNgfP3jS_Pc/edit#gid=0

새로운 방아쇠를 만들려고했는데 이런 일이 일어나지 않습니다.

function createOnEditTrigger() {
  var ss = SpreadsheetApp.openById(targetSpreadsheetID);
  ScriptApp.newTrigger("CopyRange")
    .forSpreadsheet(ss)
    .onEdit()
    .create();
}

  • 답변 # 1

    설명/문제 :

    여기서 주목해야 할 두 가지 사항이 있습니다.

    이벤트 개체를 매개 변수로 전달하는 것을 잊었습니다. CopyRange(e) 함수. 이 매개 변수가 없으면 이벤트 개체를 사용할 수 없지만 코드에서 사용합니다.

    실제로 설치 가능한 트리거가 필요합니다. SpreadsheetApp.openById() . 실제로 언급 한 스크립트로 트리거를 만들 수도 있으며 이것이 제가 권장하는 접근 방식이기도합니다.

    해결책:

    다음으로 이동 export 스프레드 시트에서 이전 코드를 지우고이 코드를 추가합니다. 기본적으로 이벤트 개체를 CopyRange(e) 기능 및 트리거 생성 기능. 그런 다음 실행그만큼 createOnEditTrigger 함수:

    function CopyRange(e) {
      if (e.range.getA1Notation() === 'C1'){
     var sss = SpreadsheetApp.openById('1ws8yg5_1k4ZZN2amfZ-cNvY-hUMUDGhbwnNPCGJhlAY'); //replace with source ID
     var ss = sss.getSheetByName('export'); 
     var range = ss.getRange('B3:C8'); 
     var data = range.getValues();
     var tss = SpreadsheetApp.openById('152JxdVi6Ssqz2ZZ65yDW5p5m0PnP63vApNgfP3jS_Pc'); //replace with destination ID
     var ts = tss.getSheetByName('import'); //replace with destination Sheet tab name
     ts.getRange(1, 2, 6,2).setValues(data); //you will need to define the size of the copied data see getRange()
    }
    }
    function createOnEditTrigger() {
      var ss = SpreadsheetApp.openById('1ws8yg5_1k4ZZN2amfZ-cNvY-hUMUDGhbwnNPCGJhlAY');
      ScriptApp.newTrigger("CopyRange")
        .forSpreadsheet(ss)
        .onEdit()
        .create();
    }
    
    

관련 자료

  • 이전 formula - Doxygen 문서에 수학 포함
  • 다음 android - adb shell screencap return black image from video