문제 해결

경험이 많은 개발자라도 첫 번째 단계에서 코드를 올바르게 작성하는 경우는 거의 없습니다. 문제 해결이 개발 프로세스의 중요한 부분이 되도록 하세요. 포함 이 섹션에서는 Google 애널리틱스 4를 찾고, 이해하고, 디버그 오류를 방지해야 합니다.

오류 메시지

스크립트에 오류가 발생하면 오류 메시지가 표시됩니다. 메시지 문제 해결에 사용되는 행 번호가 함께 제공됩니다. 두 가지 기본적인 구문 오류런타임 오류로 표시됩니다.

구문 오류

JavaScript를 따르지 않는 코드를 작성할 경우 구문 오류가 발생합니다. 스크립트를 저장하려고 시도하는 즉시 오류가 감지됩니다. 예를 들어 다음 코드 스니펫에는 구문 오류가 포함되어 있습니다.

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

여기서 문법 문제는 네 번째 끝에 ) 문자가 누락되어 있습니다. 행입니다. 스크립트를 저장하려고 하면 다음 오류가 표시됩니다.

인수 목록 뒤에 )가 없습니다. (줄 4)

이러한 유형의 오류는 오류가 발생할 수 있는 대개 단순한 원인이 있습니다 파일을 저장할 수 없습니다. 이 파일을 찾을 수 있습니다. 즉, 유효한 코드만 살펴보겠습니다

런타임 오류

이러한 오류는 함수나 클래스를 잘못 사용하면 발생하며 스크립트를 실행한 후에만 감지할 수 있습니다. 예를 들어 다음 코드는 런타임 오류가 발생합니다.

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

코드 형식은 올바르지만 'john' 값을 전달합니다. 대상 이메일 주소를 입력해 주시기 바랍니다. MailApp.sendEmail 이는 유효한 이메일 주소가 아니므로 스크립트를 실행할 때 다음 오류가 발생합니다.

잘못된 이메일: john (5행)

이러한 오류를 해결하기가 더 어려운 이유는 데이터가 함수에 전달하는 것은 코드로 작성되지 않고 대신 데이터를 가져올 수 있습니다. 디버깅 사용 이러한 오류의 원인을 파악하는 데 도움이 될 수 있습니다.

일반적인 실수

다음은 일반적인 오류와 그 원인 목록입니다.

서비스를 너무 많이 호출함: <action name>

이 오류는 특정 작업의 일일 할당량을 초과했음을 나타냅니다. 예를 들어 한 번에 너무 많은 이메일을 보내는 경우 알 수 있습니다. 할당량은 소비자, 도메인, 사전 동의 없이 언제든지 변경될 수 있음 Google의 발표입니다. 다음에서 다양한 작업의 할당량 한도를 확인할 수 있습니다. Apps Script 할당량 문서

서버를 사용할 수 없습니다. 또는 서버 오류가 발생했습니다. 다시 시도해 주세요.

이러한 오류가 발생하는 몇 가지 원인은 다음과 같습니다.

  • Google 서버 또는 시스템을 일시적으로 사용할 수 없습니다. 잠시 기다립니다. 스크립트를 다시 실행해 보세요.
  • 스크립트에 해당하는 오류가 없는 오류가 있습니다. 메시지가 표시됩니다. 스크립트를 디버깅하여 문제를 파악할 수 있는지 확인해 보세요.
  • Google Apps Script에 이 오류가 발생하는 버그가 있습니다. 대상 자세한 내용은 버그. 새 버그를 신고하기 전에 다른 사용자가 이미 신고했는지 확인하세요.

작업을 수행하려면 승인이 필요합니다.

이 오류는 스크립트에 실행에 필요한 승인이 부족함을 나타냅니다. 스크립트가 스크립트 편집기 또는 커스텀 메뉴 항목에서 실행될 때 승인 대화상자가 사용자에게 표시됩니다. 하지만 스크립트가 트리거에서 실행되거나 Google Sites 페이지에 삽입되거나 서비스로 실행되면 대화상자가 표시되지 않고 이 오류가 표시됩니다.

스크립트를 인증하려면 스크립트 편집기를 열고 함수를 실행하세요. 이 스크립트 프로젝트를 승인할 수 있도록 승인 프롬프트가 나타납니다. 만약 스크립트에 새로운 승인되지 않은 서비스가 포함되어 있는 경우 스크립트를 다시 인증해야 합니다.

이 오류는 주로 다음과 같은 이유로 발생합니다. 트리거를 사용자가 승인했습니다. 스크립트 프로젝트에 대한 액세스 권한이 없는 경우 (사용 중인 부가기능에 대해 오류가 발생하고 있기 때문입니다. 를 사용하는 경우) 일반적으로 추가 기능으로 스크립트를 승인할 수 있습니다. 다시 시도합니다. 트리거가 계속 실행되어 이 오류가 발생하는 경우 다음과 같은 방법으로 트리거를 실행합니다.

  1. Apps Script 프로젝트 왼쪽에서 트리거 를 클릭합니다.
  2. 삭제하려는 트리거의 오른쪽에서 더보기 를 클릭합니다. &gt; 트리거 삭제

문제가 있는 부가기능 트리거를 삭제하는 방법은 다음과 같습니다. 부가기능 제거

액세스가 거부됨: DriveApp 또는 도메인 정책으로 인해 서드 파티 Drive 앱이 사용 중지됨

Google Workspace 도메인의 관리자는 도메인에 대해 Drive API를 사용 중지할 수 있으며, 이렇게 하면 사용자가 Google Drive 앱을 설치하고 사용하지 못하게 됩니다. 또한 이 설정은 Apps Script 부가기능을 사용할 수 없도록 드라이브 서비스 또는 고급 Drive 서비스 (관리자가 Drive API를 사용 중지하기 전에 스크립트가 승인된 경우에도)

하지만 Drive 서비스를 사용하는 부가기능 또는 웹 앱이 도메인 전체 설치 도메인 내의 일부 또는 모든 사용자를 위해 관리자가 설치한 경우 사용자가 사용할 수 있도록 Drive API가 사용 중지된 경우에도 있습니다.

스크립트에 활성 사용자의 ID를 가져올 권한이 없습니다.

활성 사용자의 ID와 이메일을 있습니다. 이 경고는 Session.getActiveUser() 또한 Session.getEffectiveUser() 드림 스크립트가 AuthMode.FULL 이 경고가 신호되면 후속 User.getEmail() 호출은 ''만 반환합니다.

이 경고의 문제를 해결하는 방법에는 여러 가지가 있으며 승인 모드일 수도 있습니다. 승인 모드는 트리거된 함수에서 eauthMode 속성 이벤트 매개변수입니다.

  • AuthMode.FULL에서는 대신 Session.getEffectiveUser()를 사용하는 것이 좋습니다.
  • AuthMode.LIMITED에서 다음을 확인합니다. 소유자가 스크립트를 승인했습니다.
  • 다른 승인 모드에서는 두 메서드를 호출하지 마세요.
  • 설치 가능한 트리거에서 이 경고가 새로 표시되는 Google Workspace 고객인 경우 트리거가 조직 내에서 사용자로 실행되고 있는지 확인하세요.

라이브러리가 없음

스크립트에 인기 있는 라이브러리를 추가하면 라이브러리가 스크립트의 종속 항목으로 표시되어 있더라도 라이브러리가 누락되었다는 오류 메시지가 표시될 수 있습니다. 너무 많은 사용자가 동시에 라이브러리에 액세스하고 있기 때문일 수 있습니다. 이 오류를 방지하려면 다음 해결 방법 중 하나를 시도해 보세요.

  • 라이브러리의 코드를 복사하여 스크립트에 붙여넣고 라이브러리 삭제 종속됩니다.
  • 라이브러리 스크립트를 복사하여 계정에서 라이브러리로 배포합니다. 반드시 원본 스크립트의 종속 항목을 새 라이브러리로 업데이트합니다. 표시됩니다.

라이브러리 버전 또는 배포 버전 누락으로 인해 오류가 발생했습니다. 오류 코드 Not_Found

이 오류 메시지는 다음 중 하나를 나타냅니다.

  • 배포된 버전의 스크립트가 삭제되었습니다. 배포된 자세한 내용은 버전 관리 스크립트 수정 배포를 클릭합니다.
  • 스크립트에서 사용하는 라이브러리 버전이 삭제되었습니다. 어떤 포드가 라이브러리가 누락된 경우 라이브러리 이름 옆에 있는 더보기 &gt; 새 탭에서 열기를 탭합니다. 누락된 라이브러리로 인해 오류 메시지가 표시됩니다. 업데이트해야 하는 라이브러리를 찾은 후 다음 작업 중 하나를 실행합니다.
  • 스크립트에서 사용하는 라이브러리의 스크립트에는 라이브러리로 대체될 수 있습니다. 다음 작업 중 하나를 수행합니다.
    • 스크립트에서 사용하는 라이브러리에 대한 수정 액세스 권한이 있는 경우 기존 버전에 추가할 수 있습니다.
    • 다른 버전을 사용하도록 라이브러리를 업데이트합니다. 업데이트를 참조하세요. 라이브러리를 사용하여 v3 지도에 통합할 수 있습니다.
    • 스크립트 프로젝트 및 코드에서 라이브러리를 삭제합니다. 자세한 내용은 라이브러리를 삭제합니다.

오류 400: 고급 서비스로 Google Chat API를 호출할 때 invalid_scope 발생

오류 메시지와 함께 Error 400: invalid_scope가 발생하는 경우 Some requested scopes cannot be shown, 승인 범위를 지정하지 않았다는 뜻입니다. Apps Script 프로젝트의 appsscript.json 파일 대부분의 경우 Apps Script는 스크립트에 필요한 범위를 자동으로 결정하고 Chat 고급 서비스를 사용하는 경우 스크립트에서 사용하는 승인 범위를 Apps Script 프로젝트의 매니페스트 파일. 자세한 내용은 명시적 범위 설정

오류를 해결하려면 적절한 승인 범위를 추가하세요. 다음 명령어로 Apps Script 프로젝트의 appsscript.json 파일에 oauthScopes 배열입니다. 예를 들어 spaces.messages.create 드림 메서드에 다음을 추가합니다.

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

<URL>에 대한 UrlFetch 호출 관리자가 허용하지 않았습니다

Google Workspace 관리자는 관리 콘솔에서 허용 목록을 사용 설정할 수 있습니다. 액세스를 허용할 외부 도메인을 제어할 수 있습니다. Apps Script

이 오류를 해결하려면 관리자에게 문의하여 URL을 허용 목록에 추가하도록 요청하세요.

디버깅

모든 실수가 오류 메시지를 표시하는 것은 아닙니다. 코드가 기술적으로 올바르고 실행할 수 있지만 결과가 예상과 다른 더 미묘한 오류가 있을 수 있습니다. 이러한 문제를 해결하기 위한 몇 가지 전략은 제대로 실행되지 않는 스크립트를 추가 조사하여 있습니다.

로깅

디버깅할 때 정보를 스크립트 프로젝트로 기록하면 유용한 경우가 많습니다. 실행됩니다 Google Apps Script에서는 두 가지 방법으로 정보를 로깅할 수 있습니다. Cloud Logging 서비스 기본적인 로거 및 콘솔 서비스는 애플리케이션 스크립트 편집기에 내장되어 있습니다.

자세한 내용은 Logging 가이드를 참고하세요.

Error Reporting

런타임 오류로 인해 발생하는 예외는 자동으로 Google Cloud Error Reporting 서비스를 사용하여 기록한 모든 오류를 보여줍니다 이 서비스를 사용하면 스크립트 프로젝트에서 생성한 예외 메시지를 검색하고 필터링할 수 있습니다.

Error Reporting에 액세스하려면 Cloud 로그 및 오류 보고서 보기 Google Cloud Platform Console을 사용합니다.

실행

스크립트를 실행할 때마다 Apps Script에서 실행 기록을 작성합니다. 여기에는 Cloud 로그도 포함됩니다 이러한 기록은 확인할 수 있습니다

스크립트 실행을 보려면 Apps Script 프로젝트 왼쪽에서 실행을 클릭합니다. 입니다.

Apps Script 서비스 상태 확인

드물지만 가끔 특정 Google Workspace 서비스 (예: Gmail 또는 Drive) 서비스 중단으로 이어질 수 있는 일시적인 문제가 발생합니다. 이 서비스를 사용하는 경우 이 서비스와 상호작용하는 Apps Script 프로젝트가 작동하지 않을 수 있습니다. 확인할 수 있습니다

Google Workspace 서비스가 있는지 확인할 수 있습니다. 서비스 중단을 검토하여 Google Workspace 상태 대시보드 서비스 중단이 다음에 해당하는 경우 해결할 때까지 기다리거나 추가 도움말을 보려면 Google Workspace 고객센터 또는 Google Workspace 알려진 문제 문서를 참조하세요.

디버거 및 중단점 사용

스크립트에서 문제를 찾으려면 디버그 모드에서 스크립트를 실행하면 됩니다. 실행 시 디버그 모드에서는 지정한 줄인 중단점에 도달하면 스크립트가 일시중지됩니다. 문제가 있을 수 있다고 스크립트에서 강조 표시하세요. 스크립트가 일시중지할 때 특정 시점의 각 변수의 값을 분석하여 스크립트의 내부 작동을 처리할 수 있습니다.

중단점 추가

중단점을 추가하려면 지정할 수도 있습니다 행 번호 왼쪽에 있는 원을 클릭합니다. 아래 이 이미지는 스크립트에 추가된 중단점의 예를 보여줍니다.

중단점 추가

디버그 모드에서 스크립트 실행

디버그 모드에서 스크립트를 실행하려면 편집기 상단에서 Debug를 클릭합니다.

스크립트가 중단점이 있는 줄을 실행하기 전에 일시중지되고 디버그 정보 표. 이 표를 사용하여 저장된 정보와 매개변수를 저장하는 데 사용됩니다

스크립트 실행 방법을 제어하려면 Debugger 패널 상단에서 'Step in', 'Step Over' 및 'Step Out'을 사용합니다. 버튼을 클릭합니다. 이를 통해 한 번에 한 줄씩 스크립트를 작성하고 시간이 지남에 따라 값이 어떻게 변하는지 검사합니다.

여러 Google 계정 관련 문제

여러 Google 계정에 동시에 로그인된 경우 부가기능 및 웹 앱에 액세스하는 데 문제가 있을 수 있습니다. 멀티 로그인 또는 한 번에 여러 Google 계정에 로그인하는 기능은 Apps에서 지원되지 않습니다. 스크립트, 부가기능, 웹 앱

  • 두 개 이상의 계정에 로그인한 상태에서 Apps Script 편집기를 여는 경우 Google 메시지 계속 진행할 계정을 선택합니다.

  • 웹 앱 또는 부가기능을 열었을 때 멀티 로그인 문제가 발생하는 경우 다음 중 하나를 시도해 보세요. 다음 해결책:

    • 모든 Google 계정에서 로그아웃하고 웹 앱을 선택합니다.
    • Chrome에서 시크릿 창 또는 이에 상응하는 시크릿 브라우징을 엽니다. 창을 열고 부가기능 또는 웹 앱이 있는 Google 계정으로 로그인합니다. 정의합니다.

도움 받기

위에 나열된 도구와 기술을 사용하여 문제를 디버깅하면 다양한 문제에 직면할 수 있지만 약간의 도움이 필요한 도움이 될 것입니다. 다음 지원 페이지를 참조하세요. 질문하고 버그를 신고할 수 있는 위치에 관한 정보를 제공합니다.