ড্রপডাউন চিপের সাথে কাজ করা

Google Docs API-এর সাহায্যে আপনি Google Docs ডকুমেন্টের মধ্যে ড্রপডাউন চিপ প্রোগ্র্যামাটিক্যালি তৈরি, ইনসার্ট, আপডেট, পড়তে ও ম্যানেজ করতে পারবেন।

ড্রপডাউন চিপ কী?

Google Docs-এ ড্রপডাউন চিপ ব্যবহারকারীদের ডকুমেন্টের টেক্সটের মধ্যে ইনলাইন ইন্ট্যার‍্যাক্টিভ, কাস্টমাইজ করা যায় এমন একটি বেছে নেওয়ার মেনু প্রদান করে। ব্যবহারকারীরা বিকল্পের পূর্বনির্ধারিত তালিকা থেকে বেছে নিতে ড্রপডাউন চিপে ক্লিক করতে পারেন, প্রতিটি বিকল্পের নিজস্ব ডিসপ্লে টেক্সট এবং কালার স্টাইলিং আছে। প্রোজেক্ট ট্র্যাক করা, স্ট্যাটাস আপডেট করা, রিভিউ ওয়ার্কফ্লো এবং অনুমোদন স্টেজের জন্য ড্রপডাউন চিপ প্রায়ই ব্যবহার করা হয়।

Docs API-এর মাধ্যমে, আপনি এগুলি করতে পারবেন:

  • কাস্টমাইজ করা শীর্ষক, বিকল্পের নাম ও রঙ সহ আবার ব্যবহারযোগ্য ড্রপডাউন টেমপ্লেট নির্ধারণ করুন।
  • সঠিক অক্ষরের লোকেশনে ড্রপডাউন চিপ যোগ করুন।
  • কোনও একটি ড্রপডাউন চিপ ইনস্ট্যান্সের বেছে নেওয়া বিকল্প আপডেট করুন।
  • একই জায়গায় শেয়ার করা ড্রপডাউন সংজ্ঞা পরিবর্তন করা, একই সাথে রেফারেন্স করা সব চিপ আপডেট করা।
  • আগে থেকে থাকা চিপ জুড়ে রেফারেন্স সংক্রান্ত অখণ্ডতা বজায় রেখে নিরাপদে বিকল্প পরিবর্তন বা বাতিল করা।
  • অব্যবহৃত ড্রপডাউন টেমপ্লেট মুছে দিন।

আর্কিটেকচার: সংজ্ঞা ও উদাহরণ

Docs API-তে, ড্রপডাউন চিপের সংজ্ঞা ও উদাহরণ আছে। একটি সংজ্ঞা ড্রপডাউন ইনস্ট্যান্সের জন্য বিকল্প সেট করে। ড্রপডাউন ইনস্ট্যান্স হল এমন একটি ড্রপডাউন যার সাথে লোকজন ইন্টার‍্যাক্ট করতে পারেন এবং এটি বেছে নেওয়া বিষয় সম্পর্কে তথ্য সেভ করে।

Docs API, ড্রপডাউন টেমপ্লেট কনফিগারেশনকে ইনলাইন ড্রপডাউন চিপ ইনস্ট্যান্স থেকে আলাদা করে:

  1. DropdownDefinition: এটি একটি ট্যাব-লেভেল টেমপ্লেট যা ড্রপডাউনের শীর্ষক এবং বেছে নেওয়ার উপযুক্ত বিকল্পের সংগ্রহ (DropdownOption) নির্ধারণ করে। এটি ডকুমেন্টের কোনও নির্দিষ্ট ক্যারেক্টার অফসেটে থাকে না; পরিবর্তে, এটি ট্যাবের সংজ্ঞা ম্যাপে স্টোর করা হয়: document.tabs[].documentTab.dropdownDefinitions।
  2. ড্রপডাউন: প্যারাগ্রাফ এলিমেন্টের (ParagraphElement.dropdown) মধ্যে ইনলাইন এম্বেড করা একটি স্বতন্ত্র চিপ ইনস্ট্যান্স। প্রতিটি ড্রপডাউন ইনস্ট্যান্স একটি dropdownDefinitionId-কে রেফার করে এবং এর নিজস্ব অ্যাক্টিভ selectedOptionId সেভ করে।

DropdownDefinition পরিবর্তন করা হলে (যেমন, কোনও বিকল্প যোগ করা বা নাম পরিবর্তন করা) ট্যাবের সব রেফারেন্সিং চিপ আপডেট হয়ে যায়, এর জন্য প্রতিটি এলিমেন্ট আলাদা আলাদা করে আপডেট করতে হয় না।

প্রতিটি Dropdown ইনস্ট্যান্স তার নিজস্ব selectedOptionId ট্র্যাক করে। কোনও স্বতন্ত্র চিপের বেছে নেওয়া ভ্যালু পরিবর্তন করলে, শুধুমাত্র সেই নির্দিষ্ট ইনস্ট্যান্স প্রভাবিত হয়।

আইডি ফর্ম্যাট ও যাচাইকরণ সংক্রান্ত নিয়ম

ব্যবহারকারীর দেওয়া আইডিকে অবশ্যই কঠোর ফর্ম্যাট, প্রিফিক্স ও দৈর্ঘ্যের স্পেসিফিকেশন মেনে চলতে হবে:

সনাক্তকারী বাধ্যতামূলক প্রিফিক্স ভ্যালিডেশন রেগুলার এক্সপ্রেশন দৈর্ঘ্যের সীমা উদাহরণ
ড্রপডাউন সংজ্ঞা আইডি (dropdownDefinitionId) kix. ^kix\.[a-zA-Z0-9_-]{2,14}$ ৬–১৮টি অক্ষর kix.review_status
ড্রপডাউন বিকল্প আইডি (optionId) dropdownItem. ^dropdownItem\.[a-zA-Z0-9_-]{2,14}$ ১৫–২৭টি অক্ষর dropdownItem.pending

ব্যবহারকারীর দেওয়া আইডি জেনারেট করা

বাধ্যতামূলক প্রিফিক্স ও রেগুলার এক্সপ্রেশন সংক্রান্ত প্রয়োজনীয়তা মেনে চলে এমন আইডি তৈরি করতে, নিম্নলিখিত হেল্পার ফাংশন ব্যবহার করুন। এইসব হেল্পার ছোট হাতের বেস-৩৬ অ্যালফানিউমেরিক সাফিক্স জেনারেট করে, যা Google Docs UI-এর জেনারেট করা ফর্ম্যাটের সাথে ম্যাচ করে:

Python

import random
import string

def generate_dropdown_definition_id(suffix_len: int = 8) -> str:
    """Generates a valid user-provided DropdownDefinition ID (6-18 chars, starting with 'kix.')."""
    chars = string.ascii_lowercase + string.digits
    suffix = "".join(random.choices(chars, k=max(2, min(suffix_len, 14))))
    return f"kix.{suffix}"

def generate_dropdown_option_id(suffix_len: int = 8) -> str:
    """Generates a valid user-provided DropdownOption ID (15-27 chars, starting with 'dropdownItem.')."""
    chars = string.ascii_lowercase + string.digits
    suffix = "".join(random.choices(chars, k=max(2, min(suffix_len, 14))))
    return f"dropdownItem.{suffix}"

Java

import java.security.SecureRandom;

public final class DropdownIdGenerator {
  private static final String BASE36_CHARS =
      "abcdefghijklmnopqrstuvwxyz0123456789";
  private static final SecureRandom RANDOM = new SecureRandom();

  private DropdownIdGenerator() {}

  /** Generates a valid user-provided DropdownDefinition ID (6-18 chars, starting with "kix."). */
  public static String generateDefinitionId(int suffixLength) {
    int length = Math.max(2, Math.min(suffixLength, 14));
    StringBuilder sb = new StringBuilder("kix.");
    for (int i = 0; i < length; i++) {
      sb.append(BASE36_CHARS.charAt(RANDOM.nextInt(BASE36_CHARS.length())));
    }
    return sb.toString();
  }

  /** Generates a valid user-provided DropdownOption ID (15-27 chars, starting with "dropdownItem."). */
  public static String generateOptionId(int suffixLength) {
    int length = Math.max(2, Math.min(suffixLength, 14));
    StringBuilder sb = new StringBuilder("dropdownItem.");
    for (int i = 0; i < length; i++) {
      sb.append(BASE36_CHARS.charAt(RANDOM.nextInt(BASE36_CHARS.length())));
    }
    return sb.toString();
  }
}

ড্রপডাউন চিপ তৈরি ও যোগ করা

সিঙ্গেল-ব্যাচ ক্রিয়েশন (সাজেস্ট করা হয়)

সবচেয়ে কার্যকর প্যাটার্ন হল একটি documents.batchUpdate কলের মধ্যে CreateDropdownDefinitionRequest ও InsertDropdownRequest-কে একত্রিত করা।

নিম্নলিখিত কোড স্যাম্পেল, ব্যবহারকারীর দেওয়া আইডি ব্যবহার করে তিনটি কালার-কোডেড বিকল্প সহ "পর্যালোচনা স্ট্যাটাস" ড্রপডাউন সংজ্ঞা তৈরি করে এবং ডকুমেন্টের শেষে একটি ইনস্ট্যান্স যোগ করে:

Python

requests = [
    {
        "createDropdownDefinition": {
            "dropdownDefinition": {
                "dropdownDefinitionId": "kix.review_status",
                "dropdownDefinitionProperties": {
                    "title": "Review Status",
                    "options": [
                        {
                            "optionId": "dropdownItem.pending",
                            "displayValue": "Pending Review",
                            "textStyle": {
                                "backgroundColor": {
                                    "color": {"rgbColor": {"red": 0.99, "green": 0.90, "blue": 0.65}}
                                },
                                "foregroundColor": {
                                    "color": {"rgbColor": {"red": 0.45, "green": 0.30, "blue": 0.0}}
                                },
                            },
                        },
                        {
                            "optionId": "dropdownItem.approved",
                            "displayValue": "Approved",
                            "textStyle": {
                                "backgroundColor": {
                                    "color": {"rgbColor": {"red": 0.85, "green": 0.95, "blue": 0.85}}
                                },
                                "foregroundColor": {
                                    "color": {"rgbColor": {"red": 0.08, "green": 0.40, "blue": 0.15}}
                                },
                            },
                        },
                        {
                            "optionId": "dropdownItem.rejected",
                            "displayValue": "Needs Changes",
                            "textStyle": {
                                "backgroundColor": {
                                    "color": {"rgbColor": {"red": 0.98, "green": 0.84, "blue": 0.84}}
                                },
                                "foregroundColor": {
                                    "color": {"rgbColor": {"red": 0.65, "green": 0.10, "blue": 0.10}}
                                },
                            },
                        },
                    ],
                },
            }
        }
    },
    {
        "insertDropdown": {
            "endOfSegmentLocation": {},
            "dropdownDefinitionId": "kix.review_status",
            "selectedOptionId": "dropdownItem.pending",
        }
    },
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID,
    body={"requests": requests}
).execute()

Java

List<Request> requests = new ArrayList<>();

List<DropdownOption> options = Arrays.asList(
    new DropdownOption()
        .setOptionId("dropdownItem.pending")
        .setDisplayValue("Pending Review")
        .setTextStyle(new TextStyle()
            .setBackgroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.99f).setGreen(0.90f).setBlue(0.65f))))
            .setForegroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.45f).setGreen(0.30f).setBlue(0.0f))))),
    new DropdownOption()
        .setOptionId("dropdownItem.approved")
        .setDisplayValue("Approved")
        .setTextStyle(new TextStyle()
            .setBackgroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.85f).setGreen(0.95f).setBlue(0.85f))))
            .setForegroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.08f).setGreen(0.40f).setBlue(0.15f))))),
    new DropdownOption()
        .setOptionId("dropdownItem.rejected")
        .setDisplayValue("Needs Changes")
        .setTextStyle(new TextStyle()
            .setBackgroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.98f).setGreen(0.84f).setBlue(0.84f))))
            .setForegroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.65f).setGreen(0.10f).setBlue(0.10f))))));

DropdownDefinition definition = new DropdownDefinition()
    .setDropdownDefinitionId("kix.review_status")
    .setDropdownDefinitionProperties(new DropdownDefinitionProperties()
        .setTitle("Review Status")
        .setOptions(options));

requests.add(new Request().setCreateDropdownDefinition(
    new CreateDropdownDefinitionRequest().setDropdownDefinition(definition)));

requests.add(new Request().setInsertDropdown(
    new InsertDropdownRequest()
        .setEndOfSegmentLocation(new EndOfSegmentLocation())
        .setDropdownDefinitionId("kix.review_status")
        .setSelectedOptionId("dropdownItem.pending")));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
    .batchUpdate(DOCUMENT_ID, body)
    .execute();

ড্রপডাউন যাচাইকরণের নিয়ম ও সীমা

ড্রপডাউন সংজ্ঞা তৈরি বা পরিবর্তন করার সময়, নিম্নলিখিত বিধিনিষেধ প্রযোজ্য হয়:

  • বিকল্পের সংখ্যা: ড্রপডাউন সংজ্ঞায় অবশ্যই ২ থেকে ৫০টি বিকল্প থাকতে হবে।
  • শীর্ষকের দৈর্ঘ্য: সংজ্ঞা title খালি রাখা যাবে না এবং ২০০ অক্ষরের বেশি হলে চলবে না।
  • দেখানো ভ্যালুর দৈর্ঘ্য: প্রতিটি বিকল্পের displayValue খালি রাখা যাবে না এবং ২০০ অক্ষরের বেশি হলে চলবে না।
  • বিকল্পের স্টাইলিং: DropdownOption.textStyle-এ শুধুমাত্র foregroundColor ও backgroundColor কাজ করে। অন্যান্য স্টাইল প্রপার্টি সেট করলে 400 Bad Request সমস্যা হয়।
  • ডিফল্ট হিসেবে বেছে নেওয়া: InsertDropdownRequest-এ, selectedOptionId বাদ দেওয়া হলে, চিপটি DropdownDefinition-এ সংজ্ঞায়িত প্রথম বিকল্পে ডিফল্ট হিসেবে সেট হয়ে যায়।

কোনও একটি ড্রপডাউন চিপের বেছে নেওয়া বিকল্প আপডেট করা

আগে থেকে থাকা ড্রপডাউন চিপের কোনও ইনস্ট্যান্সের বেছে নেওয়া বিকল্প পরিবর্তন করতে, সেটির টেমপ্লেট বা অন্যান্য চিপে কোনও পরিবর্তন না করে, UpdateDropdownPropertiesRequest ব্যবহার করুন:

  • dropdownId: (প্রয়োজনীয়) আপডেট করার জন্য নির্দিষ্ট ড্রপডাউন চিপ ইনস্ট্যান্সের আইডি।
  • tabId: ড্রপডাউন মেনু থাকা ট্যাবের আইডি (উল্লেখ না করা হলে ডিফল্ট হিসেবে প্রথম ট্যাব)।
  • fields: "selectedOptionId"-এ সেট করা আছে।

নিচের কোড স্যাম্পেলটি ড্রপডাউন চিপের অ্যাক্টিভ বেছে নেওয়া বিকল্পকে "dropdownItem.approved" হিসেবে আপডেট করে:

Python

requests = [
    {
        "updateDropdownProperties": {
            "dropdownId": "kix.chip_abc1",
            "tabId": "t.0",
            "dropdownProperties": {
                "selectedOptionId": "dropdownItem.approved",
            },
            "fields": "selectedOptionId",
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID,
    body={"requests": requests}
).execute()

Java

List<Request> requests = new ArrayList<>();
requests.add(new Request().setUpdateDropdownProperties(
    new UpdateDropdownPropertiesRequest()
        .setDropdownId("kix.chip_abc1")
        .setTabId("t.0")
        .setDropdownProperties(new DropdownProperties()
            .setSelectedOptionId("dropdownItem.approved"))
        .setFields("selectedOptionId")));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
    .batchUpdate(DOCUMENT_ID, body)
    .execute();

ড্রপডাউন সংজ্ঞা ও বিকল্প আপডেট করা

টেমপ্লেটটি (নাম, বিকল্পের তালিকা, ডিসপ্লে লেবেল বা রঙ) পরিবর্তন করতে, UpdateDropdownDefinitionPropertiesRequest ব্যবহার করুন। কোনও সংজ্ঞা আপডেট করলে, ট্যাব জুড়ে সেটির রেফারেন্স দেওয়া সব ড্রপডাউন চিপ অটোমেটিক আপডেট হয়ে যায়।

বিকল্পের জন্য সম্পূর্ণ তালিকা পরিবর্তন করা

fields মাস্কে dropdownDefinitionProperties.options অন্তর্ভুক্ত থাকলে, অনুরোধটি সম্পূর্ণ তালিকা প্রতিস্থাপন করে। বেছে নেওয়া ক্রমে আপনাকে অবশ্যই বিকল্পের সম্পূর্ণ তালিকা দিতে হবে। সার্ভার বর্তমান সংজ্ঞার সাথে ইনকামিং তালিকার পার্থক্য করে:

  • নতুন বিকল্প: optionId ছাড়া (বা ব্যবহারকারীর দেওয়া নতুন optionId সহ) কোনও বিকল্প যোগ করলে সেটি সংজ্ঞায় যোগ হয়ে যায়।
  • আপডেট করা বিকল্প: আগে থেকে থাকা optionId-এ পরিবর্তিত displayValue বা textStyle আপডেট প্রদান করলে, সেই বিকল্পটি আপডেট হয়ে যায়।
  • পুনর্বিন্যস্ত বিকল্প: অনুরোধে প্রদত্ত ক্রম অনুযায়ী বিকল্পের তালিকা সেভ করা হয়।
  • মুছে দেওয়া বিকল্প: আগে থেকে থাকা optionId বাদ দিলে, সংজ্ঞা থেকে সেই বিকল্পটি মুছে যায়।

রেফারেন্সিয়াল ইন্টিগ্রিটি ও বিকল্প পরিবর্তন

ডকুমেন্টের মধ্যে কোনও ড্রপডাউন চিপে মুছে ফেলা হচ্ছে এমন কোনও বিকল্প বেছে নেওয়া হলে, আপনাকে selectedOptionIdReplacements (map<string, string>)-এ একটি ম্যাপিং দিতে হবে। কী হল মুছে ফেলা হচ্ছে এমন বিকল্পের আইডি এবং ভ্যালু হল রিপ্লেসমেন্ট বিকল্পের আইডি।

বিকল্প পরিবর্তন করে কীভাবে ড্রপডাউন সংজ্ঞা আপডেট করতে হয় তা নিম্নলিখিত কোড স্যাম্পেল থেকে জানুন:

Python

requests = [
    {
        "updateDropdownDefinitionProperties": {
            "dropdownDefinitionId": "kix.review_status",
            "tabId": "t.0",
            "dropdownDefinitionProperties": {
                "title": "Editorial Review Status",
                "options": [
                    {
                        "optionId": "dropdownItem.approved",
                        "displayValue": "Approved",
                        "textStyle": {
                            "backgroundColor": {
                                "color": {"rgbColor": {"red": 0.85, "green": 0.95, "blue": 0.85}}
                            },
                            "foregroundColor": {
                                "color": {"rgbColor": {"red": 0.08, "green": 0.40, "blue": 0.15}}
                            },
                        },
                    },
                    {
                        "optionId": "dropdownItem.rejected",
                        "displayValue": "Changes Requested",
                        "textStyle": {
                            "backgroundColor": {
                                "color": {"rgbColor": {"red": 0.98, "green": 0.84, "blue": 0.84}}
                            },
                            "foregroundColor": {
                                "color": {"rgbColor": {"red": 0.65, "green": 0.10, "blue": 0.10}}
                            },
                        },
                    },
                ],
            },
            "selectedOptionIdReplacements": {
                "dropdownItem.pending": "dropdownItem.rejected"
            },
            "fields": "title,options",
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID,
    body={"requests": requests}
).execute()

Java

List<DropdownOption> updatedOptions = Arrays.asList(
    new DropdownOption()
        .setOptionId("dropdownItem.approved")
        .setDisplayValue("Approved")
        .setTextStyle(new TextStyle()
            .setBackgroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.85f).setGreen(0.95f).setBlue(0.85f))))
            .setForegroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.08f).setGreen(0.40f).setBlue(0.15f))))),
    new DropdownOption()
        .setOptionId("dropdownItem.rejected")
        .setDisplayValue("Changes Requested")
        .setTextStyle(new TextStyle()
            .setBackgroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.98f).setGreen(0.84f).setBlue(0.84f))))
            .setForegroundColor(new OptionalColor().setColor(
                new Color().setRgbColor(new RgbColor().setRed(0.65f).setGreen(0.10f).setBlue(0.10f))))));

Map<String, String> replacements = new HashMap<>();
replacements.put("dropdownItem.pending", "dropdownItem.rejected");

List<Request> requests = new ArrayList<>();
requests.add(new Request().setUpdateDropdownDefinitionProperties(
    new UpdateDropdownDefinitionPropertiesRequest()
        .setDropdownDefinitionId("kix.review_status")
        .setTabId("t.0")
        .setDropdownDefinitionProperties(new DropdownDefinitionProperties()
            .setTitle("Editorial Review Status")
            .setOptions(updatedOptions))
        .setSelectedOptionIdReplacements(replacements)
        .setFields("title,options")));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
    .batchUpdate(DOCUMENT_ID, body)
    .execute();

ড্রপডাউন সংজ্ঞা মুছে দেওয়া

ব্যবহার করা হয়নি এমন ড্রপডাউন টেমপ্লেট সরাতে, DeleteDropdownDefinitionRequest ব্যবহার করুন।

ড্রপডাউন সংজ্ঞা কীভাবে মুছে দিতে হয় তা নিম্নলিখিত কোড স্যাম্পেল থেকে জানতে পারবেন:

Python

requests = [
    {
        "deleteDropdownDefinition": {
            "dropdownDefinitionId": "kix.review_status",
            "tabId": "t.0",
        }
    }
]

result = service.documents().batchUpdate(
    documentId=DOCUMENT_ID,
    body={"requests": requests}
).execute()

Java

List<Request> requests = new ArrayList<>();
requests.add(new Request().setDeleteDropdownDefinition(
    new DeleteDropdownDefinitionRequest()
        .setDropdownDefinitionId("kix.review_status")
        .setTabId("t.0")));

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(requests);
BatchUpdateDocumentResponse response = docsService.documents()
    .batchUpdate(DOCUMENT_ID, body)
    .execute();

সমস্যা ম্যানেজ করা ও সমস্যার সমাধান করা

সমস্যার সাধারণ অবস্থা ও সমাধান:

স্ট্যাটাস কোড কারণ রেজোলিউশন
400 INVALID_ARGUMENT ভুল আইডি প্রিফিক্স বা রেগুলার এক্সপ্রেশন ফর্ম্যাট। dropdownDefinitionId যাতে kix. (৬–১৮টি অক্ষর) দিয়ে এবং optionId যাতে dropdownItem. (১৫–২৭টি অক্ষর) দিয়ে শুরু হয় তা নিশ্চিত করুন।
400 INVALID_ARGUMENT বিকল্পের সংখ্যা সীমার বাইরে। ড্রপডাউন সংজ্ঞায় অবশ্যই ২ থেকে ৫০টি বিকল্প থাকতে হবে।
400 INVALID_ARGUMENT শীর্ষক বা ডিসপ্লে ভ্যালু খালি আছে অথবা ২০০ অক্ষরের বেশি। ১ থেকে ২০০ অক্ষরের মধ্যে কোনও খালি স্ট্রিং দেবেন না।
400 INVALID_ARGUMENT বিকল্পে টেক্সট স্টাইলের এমন প্রপার্টি আছে যা কাজ করে না। ড্রপডাউন বিকল্পে শুধুমাত্র foregroundColor ও backgroundColor কাজ করে। ফন্ট, সাইজ বা অন্যান্য অ্যাট্রিবিউট সরিয়ে দিন।
400 INVALID_ARGUMENT মুছে দেওয়ার সময় বিকল্প রিপ্লেসমেন্ট ম্যাপিং নেই। কোনও চিপের মাধ্যমে বেছে নেওয়া বিকল্প মুছে দেওয়ার সময়, selectedOptionIdReplacements-এ একটি সঠিক রিপ্লেসমেন্ট প্রদান করুন।
400 INVALID_ARGUMENT ব্যবহার করা হচ্ছে এমন সংজ্ঞা মুছে ফেলার চেষ্টা করা হয়েছে। ডেফিনিশন মুছে দেওয়ার আগে, সেটির রেফারেন্স সহ সব ড্রপডাউন চিপের ইনস্ট্যান্স মুছে দিন বা রিটার্গেট করুন।
400 INVALID_ARGUMENT ব্যবহারকারীর দেওয়া ডুপ্লিকেট আইডি। নিশ্চিত করুন যে ব্যবহারকারীর দেওয়া আইডি ডকুমেন্ট ট্যাবে অনন্য।