อัปเดตแบบฟอร์มหรือแบบทดสอบ

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

เมธอด batchUpdate() จะแสดงผลเนื้อหาการตอบกลับ ซึ่งเป็นการตอบกลับสำหรับแต่ละคำขอ แต่ละการตอบกลับจะใช้ดัชนีเดียวกันกับคำขอที่เกี่ยวข้อง สำหรับคำขอที่ไม่มีการตอบกลับที่เกี่ยวข้อง การตอบกลับที่ดัชนีนั้นจะว่างเปล่า

ข้อควรทราบก่อนที่จะเริ่มต้น

ทำงานต่อไปนี้ก่อนทำงานในหน้านี้

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

อัปเดตข้อมูลเมตา การตั้งค่า หรือรายการ

ตัวอย่างต่อไปนี้แสดงวิธีอัปเดตข้อมูลเมตาของแบบฟอร์ม แต่โครงสร้างสำหรับเนื้อหาและการตั้งค่าจะเหมือนกัน โดยจะใช้คำขอ updateItem หรือ updateSettings แทน updateFormInfo สำหรับคำขอแต่ละรายการ คุณจะระบุชื่อช่องที่จะเปลี่ยนและค่าที่อัปเดต พร้อมกับค่า updateMask เพื่อจำกัดการเปลี่ยนแปลงไว้ที่ช่องที่ระบุไว้

REST

หากต้องการอัปเดตคำอธิบายของแบบฟอร์ม ให้เรียกเมธอด batchUpdate() โดยใช้รหัสแบบฟอร์มและค่าคำอธิบายที่อัปเดต

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

    "requests": [{
        "updateFormInfo": {
            "info": {
                "description": "Please complete this quiz based on this week's readings for class."
            },
            "updateMask": "description"
        }
    }]

Python

forms/snippets/update_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": "Update metadata example for Forms API!",
    }
}

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

# Request body to add description to a Form
update = {
    "requests": [
        {
            "updateFormInfo": {
                "info": {
                    "description": (
                        "Please complete this quiz based on this week's"
                        " readings for class."
                    )
                },
                "updateMask": "description",
            }
        }
    ]
}

# Update the form with a description
question_setting = (
    form_service.forms()
    .batchUpdate(formId=createResult["formId"], body=update)
    .execute()
)

# Print the result to see it now has a description
getresult = form_service.forms().get(formId=createResult["formId"]).execute()
print(getresult)

Node.js

forms/snippets/update_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 add description to a Form
  const update = {
    requests: [
      {
        updateFormInfo: {
          info: {
            description:
              'Please complete this quiz based on this week\'s readings for class.',
          },
          updateMask: 'description',
        },
      },
    ],
  };
  const res = await forms.forms.batchUpdate({
    formId: createResponse.data.formId,
    requestBody: update,
  });
  console.log(res.data);
  return res.data;
}

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

เพิ่มรายการ

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

REST

หากต้องการเพิ่มรายการในแบบฟอร์ม ให้เรียกใช้เมธอด batchUpdate() โดยใช้รหัสแบบฟอร์ม รวมถึงข้อมูลของรายการและตำแหน่งที่ต้องการ

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

"requests": [{
    "createItem": {
        "item": {
            "title": "Homework video",
            "description": "Quizzes in Google Forms",
            "videoItem": {
                "video": {
                     "youtubeUri": "https://www.youtube.com/watch?v=Lt5HqPvM-eI"
                }
            }},
        "location": {
          "index": 0
        }
}]

Python

forms/snippets/add_item.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": "Update item example for Forms API",
    }
}

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

# Request body to add a video item to a Form
update = {
    "requests": [
        {
            "createItem": {
                "item": {
                    "title": "Homework video",
                    "description": "Quizzes in Google Forms",
                    "videoItem": {
                        "video": {
                            "youtubeUri": (
                                "https://www.youtube.com/watch?v=Lt5HqPvM-eI"
                            )
                        }
                    },
                },
                "location": {"index": 0},
            }
        }
    ]
}

# Add the video to the form
question_setting = (
    form_service.forms()
    .batchUpdate(formId=createResult["formId"], body=update)
    .execute()
)

# Print the result to see it now has a video
result = form_service.forms().get(formId=createResult["formId"]).execute()
print(result)

Node.js

forms/snippets/add_item.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 add video item to a Form
  const update = {
    requests: [
      {
        createItem: {
          item: {
            title: 'Homework video',
            description: 'Quizzes in Google Forms',
            videoItem: {
              video: {
                youtubeUri: 'https://www.youtube.com/watch?v=Lt5HqPvM-eI',
              },
            },
          },
          location: {
            index: 0,
          },
        },
      },
    ],
  };
  const updateResponse = await forms.forms.batchUpdate({
    formId: createResponse.data.formId,
    requestBody: update,
  });
  console.log(updateResponse.data);
  return updateResponse.data;
}

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

ขอคำสั่งซื้อ

เมธอด batchUpdate() จะยอมรับอาร์เรย์ของคำขอย่อย เช่น createItem และ updateItem คำขอย่อยจะได้รับการตรวจสอบทีละรายการตามลำดับที่มีให้

เช่น คำขอ batchUpdate มีอาร์เรย์ requests ที่มีคำขอย่อย createItem 2 รายการ คำขอย่อย A มี location.index 0 และคำขอย่อย B มี location.index 1 หากอาร์เรย์ requests คือ [A, B] batchUpdate จะรับช่วงต่อ หากอาร์เรย์คือ [B, A] batchUpdate จะล้มเหลวเนื่องจาก location.index 1 จะเป็นค่าที่ไม่ถูกต้อง เว้นแต่แบบฟอร์มจะมีรายการที่ดัชนี 0 อยู่แล้ว