Python 快速入門導覽課程

建立 Python 指令列應用程式,向 Google Forms API 發出要求。

快速入門導覽課程會說明如何設定及執行應用程式,來呼叫 Google Workspace API。本快速入門導覽課程會使用簡化的驗證方法,適用於測試環境。在正式環境中,建議您先瞭解驗證和授權,再選擇適合應用程式的存取憑證

本快速入門導覽課程會使用 Google Workspace 建議的 API 用戶端程式庫,處理驗證和授權流程的部分詳細資料。

目標

  • 設定環境。
  • 安裝用戶端程式庫。
  • 設定範例。
  • 執行範例。

必要條件

如要執行本快速入門導覽課程,請先完成下列必要條件:

  • Google 帳戶。

設定環境

如要完成本快速入門導覽課程,請設定環境。

啟用 API

使用 Google API 前,您需要在 Google Cloud 專案中啟用這些 API。 您可以在單一 Google Cloud 專案中啟用一或多個 API。
  • 在 Google Cloud 控制台中啟用 Google Forms API。

    啟用 API

如果您使用新的 Google Cloud 專案完成這項快速入門導覽課程,請設定 OAuth 同意畫面。如果已為 Cloud 專案完成這個步驟,請跳至下一節。

  1. 在 Google Cloud 控制台中,依序前往「Menu」(選單) > Google Auth platform >「Branding」(品牌)

    前往「Branding」(品牌宣傳)

  2. 如果您已設定 Google Auth platform,可以在「Branding」(品牌)、「Audience」(目標對象) 和「Data Access」(資料存取權) 中設定下列 OAuth 同意畫面設定。如果看到「Get Started」(尚未設定)Google Auth platform 訊息,請按一下「開始使用」
    1. 在「App Information」(應用程式資訊) 下方的「App name」(應用程式名稱) 欄位中,輸入應用程式名稱。
    2. 在「User support email」(使用者支援電子郵件) 中,選擇支援電子郵件地址,方便使用者在同意聲明方面有任何疑問時與您聯絡。
    3. 點選 [Next] (下一步)
    4. 在「Audience」(目標對象) 下方,選取「Internal」(內部)
    5. 點選 [Next] (下一步)
    6. 在「Contact Information」(聯絡資訊) 下方,輸入可接收專案異動通知的電子郵件地址
    7. 點選 [Next] (下一步)
    8. 在「Finish」(完成) 部分,請詳閱《Google API 服務使用者資料政策》,然後選取「我同意《Google API 服務:使用者資料政策》」
    9. 按一下 [Continue] (繼續)。
    10. 按一下「Create」(建立)。
  3. 目前可以略過新增範圍。 日後建立應用程式供 Google Workspace 機構以外的使用者使用時,請務必將「使用者類型」變更為「外部」。然後新增應用程式所需的授權範圍。詳情請參閱完整的「設定 OAuth 同意畫面」指南。

授權電腦應用程式的憑證

如要驗證使用者身分並存取應用程式中的使用者資料,您需要建立一或多個 OAuth 2.0 用戶端 ID。Google 的 OAuth 伺服器會使用用戶端 ID 來識別個別應用程式。如果您的應用程式在多個平台上執行,則必須為每個平台分別建立用戶端 ID。
  1. 在 Google Cloud 控制台中,依序前往「Menu」(選單) > Google Auth platform >「Clients」(用戶端)

    前往「Clients」(客戶) 頁面

  2. 按一下「Create Client」(建立用戶端)
  3. 依序點選「Application type」(應用程式類型) >「Desktop app」(電腦版應用程式)
  4. 在「Name」(名稱) 欄位中,輸入憑證名稱。這個名稱只會顯示在 Google Cloud 控制台中。
  5. 按一下 [Create] (建立)

    新建立的憑證會顯示在「OAuth 2.0 Client IDs」(OAuth 2.0 用戶端 ID) 下方。

  6. 將下載的 JSON 檔案儲存為 credentials.json,然後將該檔案移至工作目錄。

安裝 Google 用戶端程式庫

  • 安裝 Python 專用的 Google 用戶端程式庫:

    python3 -m pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
    

設定範例

  1. 在工作目錄中,建立名為 quickstart.py 的檔案。
  2. quickstart.py 中加入下列程式碼:

    forms/quickstart/quickstart.py
    from apiclient import discovery
    from httplib2 import Http
    from oauth2client import client, file, tools
    
    SCOPES = "https://www.googleapis.com/auth/forms.body"
    DISCOVERY_DOC = "https://forms.googleapis.com/$discovery/rest?version=v1"
    
    store = file.Storage("token.json")
    creds = None
    if not creds or creds.invalid:
      flow = client.flow_from_clientsecrets("client_secrets.json", SCOPES)
      creds = tools.run_flow(flow, store)
    
    form_service = discovery.build(
        "forms",
        "v1",
        http=creds.authorize(Http()),
        discoveryServiceUrl=DISCOVERY_DOC,
        static_discovery=False,
    )
    
    # Request body for creating a form
    NEW_FORM = {
        "info": {
            "title": "Quickstart form",
        }
    }
    
    # Request body to add a multiple-choice question
    NEW_QUESTION = {
        "requests": [
            {
                "createItem": {
                    "item": {
                        "title": (
                            "In what year did the United States land a mission on"
                            " the moon?"
                        ),
                        "questionItem": {
                            "question": {
                                "required": True,
                                "choiceQuestion": {
                                    "type": "RADIO",
                                    "options": [
                                        {"value": "1965"},
                                        {"value": "1967"},
                                        {"value": "1969"},
                                        {"value": "1971"},
                                    ],
                                    "shuffle": True,
                                },
                            }
                        },
                    },
                    "location": {"index": 0},
                }
            }
        ]
    }
    
    # Creates the initial form
    result = form_service.forms().create(body=NEW_FORM).execute()
    
    # Adds the question to the form
    question_setting = (
        form_service.forms()
        .batchUpdate(formId=result["formId"], body=NEW_QUESTION)
        .execute()
    )
    
    # Prints the result to show the question has been added
    get_result = form_service.forms().get(formId=result["formId"]).execute()
    print(get_result)

執行範例

  1. 在工作目錄中,建構並執行範例:

    python3 quickstart.py
    
  1. 首次執行範例時,系統會提示您授予存取權:
    1. 如果尚未登入 Google 帳戶,系統會提示你登入。如果您登入了多個帳戶,請選取要用於授權的帳戶。
    2. 按一下 [接受]

    Python 應用程式會執行並呼叫 Google Forms API。

    授權資訊會儲存在檔案系統中,因此下次執行程式碼範例時,系統不會提示您授權。

後續步驟