2013-08-12 3 views
0

최근에 googleapps 개발자 블로그에서 편지 병합 스크립트를 채택했습니다. 하나는 불필요하며 난 그냥 전체 스크립트를 언급하고 완벽하게 잘 실행 곳 http://googleappsdeveloper.blogspot.hk/2011/10/4-ways-to-do-mail-merge-using-google.htmlGoogle Script gs 파일 병합

에서

스크립트 2 스크립트 4 개 GS 파일이 있습니다.

그런 다음 "UI for Standard.gs"에서 "Code.gs"로 모든 내용을 복사하려고 시도했습니다. 그런 다음 "표준 용 UI"를 삭제했습니다.

그런 다음 스크립트가 실행되지 않습니다. 더 이상 메일을 보낼 수 없습니다.

스크립트를 병합 할 때 발생할 수있는 문제에 대한 아이디어가 있습니까?

감사합니다.

답변

2

.gs 개 파일의 모든 코드가 단일 .gs 파일에 충실하게 복사되면 스크립트 실행이 중지되지 않습니다. (이 작업을 수행 할 정당한 이유는 없지만 실제로이 예제에서 Romain처럼 코드를 분리하는 것이 좋습니다.)

알고 계십니까? 여러 '파일'이 포함 된 스크립트가 실행되면 전체 스크립트가로드되고 실행됩니다. 이 머신에서는 여러 개의 gs 파일이 존재한다는 사실을 부인합니다.이 파일은 단순히 작성자의 편의를위한 것입니다. 모든 파일의 모든 함수 및 전역 변수는 모든 개별 파일의 코드에 사용할 수 있습니다. 모든 함수 범위를 벗어나는 모든 문이 실행됩니다. (. 당신은 모든 상단에 var sheet = SpreadsheetService.getActiveSheet() 같은이있는 경우이 파일을 gs와 그래서, 그것은 여러 번 실행합니다 - 당신이 하나 필요)이 시점에서

옵션은 다음과 같습니다

  • 는 데이터가 있는지 확인 여전히 유효. 어쩌면 코드에는 아무런 문제가 없을 것입니다.
  • 실행 실패 후 실행 대본을보고 문제가 발생한 위치의 단서가 있는지 확인하십시오. 적어도 멈춘 곳을 알게 될 것입니다.
  • 원래 코드와 비교하여 수동 병합을 검토하여 코드를 올바르게 복사했는지 확인하십시오. 이것에 대한 눈의 두 번째 세트가 있다면, 더 좋습니다.
  • 디버거 또는 로거를 사용하여 processRow()merge()을주의 깊게 살펴 봅니다. 전자는 전자 메일 만 보내지 만 후자는 주 병합 작업을 수행합니다. 관찰 된 문제는 메일이 전송되지 않기 때문에 여기에서 디버깅을 시작하는 것이 좋습니다.
  • 원래대로 돌아가서 다시 시작하십시오.

스크립트를 병합 할 때 잘못 될 수있는 무엇에 어떤 아이디어?

  • 잘못 배치 된 브레이스 ({})의 데이터 구조 및 기능을 변경할 수있다.

  • 하단에만 개가 실행되지만 여러 개의 기능 사본이 gs로 허용됩니다.이 경우 오류 메시지가 표시되지 않지만 예상대로 작동하지 않을 수 있습니다. 원래 YAMM2 스크립트에는 중복 된 함수 이름이 없었지만 갤러리의 다른 스크립트를 보았습니다.

    예를 들어 gs 파일의 기능을 Code.gs에 복사 한 다음 주석 처리 한 경우 원래 파일에있는 함수의 본문을 호출하면 해당 함수 중 하나를 호출하면 Code.got에있는 복사본이 아닌 동반 파일에서 빈 버전이 실행됩니다.

  • 운영자 오류. 우리는 모두 거기에있었습니다.