फ़ॉर्म या क्विज़ को अपडेट करना

किसी फ़ॉर्म में कॉन्टेंट जोड़ने या सेटिंग, मेटाडेटा या कॉन्टेंट को अपडेट करने के लिए, batchUpdate() तरीके का इस्तेमाल करें. यह तरीका, बैच में एक साथ बदला जाता है, ताकि अगर एक अनुरोध पूरा न हो, तो दूसरे में कोई भी (संभावित तौर पर निर्भर) बदलाव न लिखा जाए.

batchUpdate() का तरीका, रिस्पॉन्स का मुख्य हिस्सा दिखाता है. इसमें हर अनुरोध का जवाब होता है. हर रिस्पॉन्स उसी इंडेक्स को इस्तेमाल करता है, जिसे संबंधित अनुरोध का अनुरोध करता है. जिन अनुरोधों के लिए कोई जवाब लागू नहीं होता है, उनके लिए कोई जवाब खाली नहीं होगा.

शुरू करने से पहले

इस पेज पर दिए गए कामों को करने से पहले, नीचे दिए गए टास्क करें:

  • अर्ली एडॉप्टर प्रोग्राम के निर्देशों में, अनुमति देने/पुष्टि करने और क्रेडेंशियल सेट अप करने की प्रोसेस पूरी करें

मेटाडेटा, सेटिंग या आइटम अपडेट करना

नीचे दिए गए उदाहरण में, फ़ॉर्म के मेटाडेटा को अपडेट करने का तरीका बताया गया है. हालांकि, कॉन्टेंट और सेटिंग का स्ट्रक्चर एक जैसा ही है. वे updateFormInfo के बजाय, updateItem या updateSettings अनुरोधों का इस्तेमाल करते हैं. हर अनुरोध के लिए, आपको उस फ़ील्ड का नाम और अपडेट की गई वैल्यू देनी होगी. साथ ही, updateMask वैल्यू के साथ, आपके बताए गए फ़ील्ड में होने वाले बदलावों को सीमित करना होगा.

आराम

फ़ॉर्म का ब्यौरा अपडेट करने के लिए, 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 इंडेक्स वाली जगह में कॉन्टेंट को फ़ॉर्म की शुरुआत में शामिल किया जाएगा.

आराम

फ़ॉर्म में कोई आइटम जोड़ने के लिए, 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 सब-अनुरोध होते हैं. सब-अनुरोध A में location.index 0 और सब-अनुरोध B में location.index 1 है. अगर requests श्रेणी [A, B] है, तो batchUpdate हो जाएगी. अगर ऐरे [B, A] है, तो batchUpdate काम नहीं करेगा, क्योंकि location.index 1 तब तक मान्य नहीं है, जब तक फ़ॉर्म में पहले से ही इंडेक्स 0 में कोई आइटम मौजूद न हो.