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

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

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

ด้านล่างนี้เป็นคำแนะนำแบบคร่าวๆ เกี่ยวกับขั้นตอนเหล่านี้

สร้างและกำหนดค่าโครงการ Apps Script ใหม่

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

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

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

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

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

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

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

ทดสอบโค้ด

  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 แบบอื่นๆ