Apps Script 프로젝트 설정

REST 호출을 통해 직접 Google Forms API를 호출하도록 Apps Script 프로젝트를 설정하는 것은 간단합니다. Google Cloud 프로젝트를 이미 구성했다고 가정하고 다음을 수행합니다.

  1. 새 Apps Script 프로젝트를 만듭니다.
  2. Google Forms API에 대해 사용 설정한 프로젝트와 일치하도록 연결된 Google Cloud 프로젝트 번호를 변경합니다.
  3. 매니페스트 파일 (appsscript.json)을 수정하여 필요한 OAuth 범위를 추가합니다.
  4. OAuth 토큰을 가져오고 이 토큰을 사용하여 REST 호출을 수행하는 Apps Script 코드를 추가합니다.

간단히 알아보려면 다음과 같이 하세요.

새 Apps Script 프로젝트 만들기 및 구성

  1. GCP 프로젝트를 구성할 때 사용한 것과 동일한 Google ID를 사용하여 Apps Script 대시보드로 이동한 후 새 프로젝트를 클릭합니다.
  2. 프로젝트가 열리면 프로젝트 설정을 클릭합니다.
  3. 편집기에 'appsscript.json' 매니페스트 파일 표시 체크박스를 선택합니다.
  4. Google Cloud Platform (GCP) 프로젝트 섹션에서 프로젝트 변경을 클릭하고 Forms API용으로 구성한 GCP 프로젝트 번호를 입력합니다.

이제 Apps Script 프로젝트가 Google Forms API에 액세스하도록 구성되었습니다. 다음으로 필요한 단계는 적절한 OAuth 범위를 추가하는 것입니다.

OAuth 범위 추가

Apps Script에서 적절한 범위의 OAuth 토큰을 생성하려면 프로젝트의 매니페스트 파일에서 필요한 범위를 설정해야 합니다.

  1. 편집기에서 appsscript.json을 엽니다.
  2. 매니페스트 본문에 범위를 추가합니다.

    {
      ...
    "oauthScopes": [
        "https://www.googleapis.com/auth/script.external_request",
        "https://www.googleapis.com/auth/drive",
        "https://www.googleapis.com/auth/drive.readonly",
        "https://www.googleapis.com/auth/forms.body",
        "https://www.googleapis.com/auth/forms.body.readonly",
        "https://www.googleapis.com/auth/forms.responses.readonly"
      ],
     ...
     }
    
  3. 프로젝트 저장을 클릭하고 필요한 경우 구문 오류를 수정합니다. 이제 프로젝트에서 REST 호출을 통해 Google Forms API를 호출할 수 있습니다.

API를 호출하는 Apps Script 코드 추가

양식을 호출하는 코드를 작성하기 전에 응답이 있는 양식을 식별하고 양식 ID를 기록해야 합니다. 양식 ID는 양식을 수정할 때 URL에서 확인할 수 있습니다.

https://docs.google.com/forms/d/<FORM_ID>/edit

API를 호출하려면 Apps Script UrlFetchApp 호출을 사용합니다.

  1. Code.gs를 열고 다음 코드를 추가합니다.

    form-api/snippets/retrieve_all_responses.gs
     function callFormsAPI() {
      console.log('Calling the Forms API!');
      var formId = '<YOUR_FORM_ID>';
    
      // Get OAuth Token
     var OAuthToken = ScriptApp.getOAuthToken();
     console.log('OAuth token is: ' + OAuthToken);
     var formsAPIUrl = 'https://forms.googleapis.com/v1/forms/' + formId + '/' + 'responses';
     console.log('formsAPIUrl is: ' + formsAPIUrl);
     var options = {
        'headers': {
          Authorization: 'Bearer ' + OAuthToken,
          Accept: 'application/json'
        },
        'method': 'get'
      };  
    var response = UrlFetchApp.fetch(formsAPIUrl, options);
     console.log('Response from forms.responses was: ' + response);
    }
  2. YOUR_FORM_ID를 앞에서 기록한 값으로 바꿉니다.

    예: var formId = 'tL5ygBC8zpbTnTp76JCZdIg80hA-cnpbTnTjnsewCKJH';

  3. Save project를 클릭하고 필요한 경우 구문 오류를 수정합니다.

코드 테스트

  1. 실행을 클릭합니다.
  2. 이전과 동일한 Google ID를 사용하여 필요에 따라 프로젝트를 승인합니다.

시작되면 실행 로그에 다음과 비슷한 응답이 표시됩니다.

Execution started
Calling the Forms API!
OAuth token is: ya29.a0ARrdaM8IMjtlv…
formsAPIUrl is: https://forms.googleapis.com/v1beta/forms/…/responses
Response from Forms.responses was: {
"responses": [
    {
      "responseId":"...",
      "createTime": "2021-03-25T01:23:58.146Z",
      "lastSubmittedTime": "2021-03-25T01:23:58.146607Z",
      "answers": {
        "1e9b0ead": {
          "questionId": "1e9b0ead",
          "textAnswers": {
            "answers": [
              {
                "value": "Red"
              }
            ]
          }
        },
        "773ed8f3": {
          "questionId": "773ed8f3",
          "textAnswers": {
            "answers": [
              {
                "value": "Tesla"
              }
            ]
          }
        }
      }
    }
  ]
}
Execution completed

다음 단계

Apps Script로 API를 호출한 후에는 참조 문서를 확인하고 API에 대한 다른 호출을 실험해 보세요.