ตั้งค่าโปรเจ็กต์ 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 ID เดียวกับที่ใช้กำหนดค่าโปรเจ็กต์ 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!');
      const formId = '<YOUR_FORM_ID>';
    
      // Get OAuth Token
     const OAuthToken = ScriptApp.getOAuthToken();
     console.log('OAuth token is: ' + OAuthToken);
     const formsAPIUrl = 'https://forms.googleapis.com/v1/forms/' + formId + '/' + 'responses';
     console.log('formsAPIUrl is: ' + formsAPIUrl);
     const options = {
        'headers': {
          Authorization: 'Bearer ' + OAuthToken,
          Accept: 'application/json'
        },
        'method': 'get'
      };  
    const response = UrlFetchApp.fetch(formsAPIUrl, options);
     console.log('Response from forms.responses was: ' + response);
    }
  2. แทนที่ YOUR_FORM_ID ด้วยค่าที่คุณจดไว้ก่อนหน้านี้

    ตัวอย่าง: var formId = 'tL5ygBC8zpbTnTp76JCZdIg80hA-cnpbTnTjnsewCKJH';

  3. คลิก บันทึกโปรเจ็กต์และแก้ไข ข้อผิดพลาดทางไวยากรณ์หากจำเป็น

ทดสอบโค้ด

  1. คลิก เรียกใช้
  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 อื่นๆ