สร้างแบบฟอร์มหรือแบบทดสอบ

หน้านี้จะอธิบายวิธีทํางานต่อไปนี้ที่เกี่ยวข้องกับแบบฟอร์ม

  • สร้างแบบฟอร์มใหม่
  • ทำสำเนาแบบฟอร์มที่มีอยู่
  • แปลงแบบฟอร์มเป็นแบบทดสอบ

ก่อนเริ่มต้น

ทํางานต่อไปนี้ก่อนดําเนินการต่อในหน้านี้

  • ตั้งค่าการให้สิทธิ์/การตรวจสอบสิทธิ์และข้อมูลเข้าสู่ระบบให้เสร็จสมบูรณ์ในวิธีการของโปรแกรมผู้ใช้งานช่วงแรก
  • อ่านภาพรวมของ Forms API

สร้างแบบฟอร์มใหม่

การสร้างแบบฟอร์มครั้งแรกต้องใช้เฉพาะช่องชื่อเท่านั้น ระบบจะไม่สนใจช่องอื่นๆ ในคำขอ หากต้องการสร้างเนื้อหาและข้อมูลเมตาของแบบฟอร์มหรือทำการอัปเดต ให้ใช้เมธอด batchUpdate() ดูข้อมูลเพิ่มเติมที่หัวข้ออัปเดตแบบฟอร์มหรือแบบทดสอบ

REST

เรียกใช้เมธอด forms.create() ด้วยชื่อเท่านั้น

ตัวอย่างเนื้อหาของคำขอ

{
  "info": {
      "title": "My new form"
  }
}

Python

forms/snippets/create_form.py
from apiclient import discovery
from httplib2 import Http
from oauth2client import client, file, tools

SCOPES = "https://www.googleapis.com/auth/drive"
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,
)

form = {
    "info": {
        "title": "My new form",
    },
}
# Prints the details of the sample form
result = form_service.forms().create(body=form).execute()
print(result)

Node.js

forms/snippets/create_form.js
'use strict';

const path = require('path');
const google = require('@googleapis/forms');
const {authenticate} = require('@google-cloud/local-auth');

async function runSample(query) {
  const authClient = await authenticate({
    keyfilePath: path.join(__dirname, 'credentials.json'),
    scopes: 'https://www.googleapis.com/auth/drive',
  });
  const forms = google.forms({
    version: 'v1',
    auth: authClient,
  });
  const newForm = {
    info: {
      title: 'Creating a new form in Node',
    },
  };
  const res = await forms.forms.create({
    requestBody: newForm,
  });
  console.log(res.data);
  return res.data;
}

if (module === require.main) {
  runSample().catch(console.error);
}
module.exports = runSample;

ทำสำเนาแบบฟอร์มที่มีอยู่

คุณทำสำเนาแบบฟอร์มที่มีอยู่ได้ด้วย Google Drive API เพื่อให้นำเนื้อหากลับมาใช้ใหม่ได้ง่ายขึ้น คุณสามารถดูรหัสแบบฟอร์มใน URL ของ Google ฟอร์มได้โดยทำดังนี้

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

REST

เรียกใช้เมธอด files.copy() ของ Google ไดรฟ์ API ด้วยรหัสของแบบฟอร์มที่ต้องการคัดลอก

Python

forms/snippets/duplicate_form.py
import os.path

from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build

# If modifying these scopes, delete the file token.json.
SCOPES = ["https://www.googleapis.com/auth/drive"]


def main():
  """Shows copy file example in Drive v3 API.
  Prints the name, id and other data of the copied file.
  """
  creds = None
  if os.path.exists("token.json"):
    creds = Credentials.from_authorized_user_file("token.json", SCOPES)
  # If there are no (valid) credentials available, let the user log in.
  if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
      creds.refresh(Request())
    else:
      flow = InstalledAppFlow.from_client_secrets_file(
          "client_secrets.json", SCOPES
      )
      creds = flow.run_local_server(port=0)
    # Save the credentials for the next run
    with open("token.json", "w") as token:
      token.write(creds.to_json())

  service = build("drive", "v3", credentials=creds)

  # Call the Drive v3 API
  origin_file_id = "1ox-6vHFeKpC6mon-tL5ygBC8zpbTnTp76JCZdIg80hA"  # example ID
  copied_file = {"title": "my_copy"}
  results = (
      service.files().copy(fileId=origin_file_id, body=copied_file).execute()
  )
  print(results)


if __name__ == "__main__":
  main()

แปลงแบบฟอร์มเป็นแบบทดสอบ

หากต้องการสร้างแบบทดสอบ ก่อนอื่นให้สร้างแบบฟอร์มตามที่อธิบายไว้ข้างต้น จากนั้นอัปเดตการตั้งค่าของแบบฟอร์ม การอัปเดตต้องใช้รหัสแบบฟอร์ม

REST

เรียกใช้เมธอด batch.update() ในแบบฟอร์มที่มีอยู่เพื่อตั้งค่า isQuiz เป็น "จริง"

ตัวอย่างเนื้อหาของคำขอ

{
  "requests": [
    {
      "updateSettings": {
        "settings": {
          "quizSettings": {
            "isQuiz": True
          }
        },
       "updateMask": "quizSettings.isQuiz"
      }
    }
  ]
}

Python

forms/snippets/convert_form.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,
)

form = {
    "info": {
        "title": "My new quiz",
    }
}

# Creates the initial form
result = form_service.forms().create(body=form).execute()

# JSON to convert the form into a quiz
update = {
    "requests": [
        {
            "updateSettings": {
                "settings": {"quizSettings": {"isQuiz": True}},
                "updateMask": "quizSettings.isQuiz",
            }
        }
    ]
}

# Converts the form into a quiz
question_setting = (
    form_service.forms()
    .batchUpdate(formId=result["formId"], body=update)
    .execute()
)

# Print the result to see it's now a quiz
getresult = form_service.forms().get(formId=result["formId"]).execute()
print(getresult)

Node.js

forms/snippets/convert_form.js
'use strict';

const path = require('path');
const google = require('@googleapis/forms');
const {authenticate} = require('@google-cloud/local-auth');

async function runSample(query) {
  const authClient = await authenticate({
    keyfilePath: path.join(__dirname, 'credentials.json'),
    scopes: 'https://www.googleapis.com/auth/drive',
  });
  const forms = google.forms({
    version: 'v1',
    auth: authClient,
  });
  const newForm = {
    info: {
      title: 'Creating a new form for batchUpdate in Node',
    },
  };
  const createResponse = await forms.forms.create({
    requestBody: newForm,
  });
  console.log('New formId was: ' + createResponse.data.formId);

  // Request body to convert form to a quiz
  const updateRequest = {
    requests: [
      {
        updateSettings: {
          settings: {
            quizSettings: {
              isQuiz: true,
            },
          },
          updateMask: 'quizSettings.isQuiz',
        },
      },
    ],
  };
  const res = await forms.forms.batchUpdate({
    formId: createResponse.data.formId,
    requestBody: updateRequest,
  });
  console.log(res.data);
  return res.data;
}

if (module === require.main) {
  runSample().catch(console.error);
}
module.exports = runSample;

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

ขั้นตอนถัดไปที่คุณอาจลองทำมีดังนี้