ตั้งค่าโปรเจ็กต์ Apps Script

การตั้งค่าโปรเจ็กต์ Apps Script เพื่อเรียกใช้ Google Forms API โดยตรงผ่านคําเรียก REST นั้นทําได้ง่ายๆ สมมติว่าคุณได้กําหนดค่าโปรเจ็กต์ Google Cloud ไว้แล้ว ให้ทําดังนี้

  1. สร้างโปรเจ็กต์ Apps Script ใหม่
  2. เปลี่ยนหมายเลขโปรเจ็กต์ Google Cloud ที่เชื่อมโยงให้ตรงกับโปรเจ็กต์ที่คุณเปิดใช้ Google Forms API
  3. แก้ไขไฟล์ Manifest (appsscript.json) เพื่อเพิ่มขอบเขต OAuth ที่จําเป็น
  4. เพิ่มโค้ด Apps Script เพื่อดึงข้อมูลโทเค็น OAuth และทำการเรียก REST โดยใช้โทเค็น

คำแนะนำโดยย่อสำหรับขั้นตอนเหล่านี้มีดังนี้

สร้างและกำหนดค่าโปรเจ็กต์ Apps Script ใหม่

  1. ใช้รหัส Google เดียวกับที่คุณกำหนดค่าโปรเจ็กต์ GCP แล้วไปที่แดชบอร์ด Apps Script จากนั้นคลิกโปรเจ็กต์ใหม่
  2. เมื่อโปรเจ็กต์เปิดขึ้นแล้ว ให้คลิก การตั้งค่าโปรเจ็กต์
  3. เลือกช่องทําเครื่องหมายแสดงไฟล์ Manifest "appsscript.json" ในเครื่องมือแก้ไข
  4. ในส่วนโปรเจ็กต์ Google Cloud Platform (GCP) ให้คลิกเปลี่ยนโปรเจ็กต์ แล้วป้อนหมายเลขโปรเจ็กต์ GCP ที่คุณกําหนดค่าไว้สําหรับ Forms API

ตอนนี้โปรเจ็กต์ Apps Script ของคุณได้รับการกําหนดค่าให้เข้าถึง Google Forms API แล้ว ขั้นตอนถัดไปที่จําเป็นคือการเพิ่มขอบเขต OAuth ที่เหมาะสม

เพิ่มขอบเขต OAuth

หากต้องการสร้างโทเค็น OAuth ที่มีขอบเขตเหมาะสมใน Apps Script คุณต้องตั้งค่าขอบเขตที่จําเป็นในไฟล์ Manifest ของโปรเจ็กต์

  1. เปิด appsscript.json ในเครื่องมือแก้ไข
  2. เพิ่มขอบเขตลงในเนื้อหาของไฟล์ Manifest

    {
      ...
    "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. คลิก บันทึกโปรเจ็กต์และแก้ไขข้อผิดพลาดเกี่ยวกับไวยากรณ์หากจำเป็น ตอนนี้โปรเจ็กต์ของคุณควรเรียกใช้ Google Forms API ผ่านการเรียก REST ได้

เพิ่มโค้ด Apps Script เพื่อเรียกใช้ API

ก่อนเขียนโค้ดเพื่อเรียกใช้แบบฟอร์ม คุณต้องระบุแบบฟอร์มที่คุณเป็นเจ้าของซึ่งมีคําตอบและจดบันทึกรหัสแบบฟอร์ม รหัสแบบฟอร์มจะอยู่ใน URL เมื่อแก้ไขแบบฟอร์ม

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

หากต้องการเรียก API คุณจะใช้การเรียก UrlFetchApp ของ Apps Script

  1. เปิด Code.gs แล้วเพิ่มโค้ดต่อไปนี้

    forms-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. คลิก บันทึกโปรเจ็กต์ แล้วแก้ไขข้อผิดพลาดเกี่ยวกับไวยากรณ์หากจำเป็น

ทดสอบโค้ด

  1. คลิก Run
  2. ให้ให้สิทธิ์โปรเจ็กต์ตามที่จำเป็นโดยใช้รหัส Google เดียวกันกับก่อนหน้านี้

เมื่อเริ่มแล้ว คุณควรเห็นการตอบกลับในบันทึกการดำเนินการคล้ายกับตัวอย่างต่อไปนี้

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

ขั้นตอนถัดไป

เมื่อเรียก API ด้วย Apps Script เรียบร้อยแล้ว ให้ดูเอกสารอ้างอิงและลองเรียก API อื่นๆ