.gs
개 파일의 모든 코드가 단일 .gs
파일에 충실하게 복사되면 스크립트 실행이 중지되지 않습니다. (이 작업을 수행 할 정당한 이유는 없지만 실제로이 예제에서 Romain처럼 코드를 분리하는 것이 좋습니다.)
알고 계십니까? 여러 '파일'이 포함 된 스크립트가 실행되면 전체 스크립트가로드되고 실행됩니다. 이 머신에서는 여러 개의 gs 파일이 존재한다는 사실을 부인합니다.이 파일은 단순히 작성자의 편의를위한 것입니다. 모든 파일의 모든 함수 및 전역 변수는 모든 개별 파일의 코드에 사용할 수 있습니다. 모든 함수 범위를 벗어나는 모든 문이 실행됩니다. (. 당신은 모든 상단에 var sheet = SpreadsheetService.getActiveSheet()
같은이있는 경우이 파일을 gs와 그래서, 그것은 여러 번 실행합니다 - 당신이 하나 필요)이 시점에서
옵션은 다음과 같습니다
- 는 데이터가 있는지 확인 여전히 유효. 어쩌면 코드에는 아무런 문제가 없을 것입니다.
- 실행 실패 후 실행 대본을보고 문제가 발생한 위치의 단서가 있는지 확인하십시오. 적어도 멈춘 곳을 알게 될 것입니다.
- 원래 코드와 비교하여 수동 병합을 검토하여 코드를 올바르게 복사했는지 확인하십시오. 이것에 대한 눈의 두 번째 세트가 있다면, 더 좋습니다.
- 디버거 또는 로거를 사용하여
processRow()
및 merge()
을주의 깊게 살펴 봅니다. 전자는 전자 메일 만 보내지 만 후자는 주 병합 작업을 수행합니다. 관찰 된 문제는 메일이 전송되지 않기 때문에 여기에서 디버깅을 시작하는 것이 좋습니다.
- 원래대로 돌아가서 다시 시작하십시오.
스크립트를 병합 할 때 잘못 될 수있는 무엇에 어떤 아이디어?
잘못 배치 된 브레이스 ({
및 }
)의 데이터 구조 및 기능을 변경할 수있다.
하단에만 개가 실행되지만 여러 개의 기능 사본이 gs로 허용됩니다.이 경우 오류 메시지가 표시되지 않지만 예상대로 작동하지 않을 수 있습니다. 원래 YAMM2 스크립트에는 중복 된 함수 이름이 없었지만 갤러리의 다른 스크립트를 보았습니다.
예를 들어 gs 파일의 기능을 Code.gs에 복사 한 다음 주석 처리 한 경우 원래 파일에있는 함수의 본문을 호출하면 해당 함수 중 하나를 호출하면 Code.got에있는 복사본이 아닌 동반 파일에서 빈 버전이 실행됩니다.
운영자 오류. 우리는 모두 거기에있었습니다.