উন্নত ড্রাইভ লেবেল পরিষেবা

গুগল অ্যাপস স্ক্রিপ্টে ড্রাইভ লেবেল অ্যাডভান্সড সার্ভিস ব্যবহার করে।

Google Drive Labels অ্যাডভান্সড সার্ভিসের মাধ্যমে আপনার Drive ফাইল ও ফোল্ডারগুলোর জন্য লেবেল তৈরি এবং পরিচালনা করুন। এই অ্যাডভান্সড সার্ভিসের সাহায্যে, আপনি Google Apps Script-এ Drive Labels API- এর সমস্ত বৈশিষ্ট্য ব্যবহার করতে পারবেন।

ড্রাইভ লেবেল প্রয়োগ বা অপসারণ করতে, অ্যাডভান্সড ড্রাইভ সার্ভিস ব্যবহার করুন।

এটি একটি উন্নত পরিষেবা যা ব্যবহারের আগে আপনাকে অবশ্যই চালু করতে হবে।

রেফারেন্স

এই পরিষেবা সম্পর্কে আরও তথ্যের জন্য, Google Drive Labels API- এর ডকুমেন্টেশন দেখুন। Apps Script-এর অন্যান্য সকল অ্যাডভান্সড সার্ভিসের মতোই, Drive Labels API সার্ভিসটিও পাবলিক API-এর মতো একই অবজেক্ট, মেথড এবং প্যারামিটার ব্যবহার করে।

সমস্যা জানাতে এবং অন্যান্য সহায়তা পেতে, গুগল ড্রাইভ লেবেল এপিআই সাপোর্ট গাইড দেখুন।

নমুনা কোড

নিম্নলিখিত নমুনা কোডটিতে API-এর সংস্করণ ২ ব্যবহার করা হয়েছে।

তালিকার লেবেল

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে অনুরোধকারী ব্যবহারকারীর জন্য উপলব্ধ লেবেলগুলির একটি তালিকা পাওয়া যায়।

advanced/driveLabels.gs
/**
 * List labels available to the user.
 */
function listLabels() {
  let pageToken = null;
  let labels = [];
  do {
    try {
      const response = DriveLabels.Labels.list({
        publishedOnly: true,
        pageToken: pageToken,
      });
      pageToken = response.nextPageToken;
      labels = labels.concat(response.labels);
    } catch (err) {
      // TODO (developer) - Handle exception
      console.log("Failed to list labels with error %s", err.message);
    }
  } while (pageToken != null);

  console.log("Found %d labels", labels.length);
}

একটি লেবেল নিন

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে একটি লেবেলের রিসোর্স নাম (যা লেবেলটির স্ট্রিং ভ্যালু) ব্যবহার করে সেটি পাওয়া যায়। লেবেলের নাম খুঁজে পেতে, API-এর মাধ্যমে লেবেলের তালিকাটি নিন অথবা ড্রাইভ লেবেল ম্যানেজার ব্যবহার করুন। লেবেল ম্যানেজার সম্পর্কে আরও তথ্যের জন্য, 'ড্রাইভ লেবেল পরিচালনা' (Manage Drive labels) বিভাগে যান।

advanced/driveLabels.gs
/**
 * Get a label by name.
 * @param {string} labelName The label name.
 */
function getLabel(labelName) {
  try {
    const label = DriveLabels.Labels.get(labelName, {
      view: "LABEL_VIEW_FULL",
    });
    const title = label.properties.title;
    const fieldsLength = label.fields.length;
    console.log(
      `Fetched label with title: '${title}' and ${fieldsLength} fields.`,
    );
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log("Failed to get label with error %s", err.message);
  }
}

একটি ড্রাইভ আইটেমের জন্য লেবেল তালিকা

নিম্নলিখিত কোড নমুনাটি দেখায় কিভাবে একটি ড্রাইভ আইটেম পেতে হয় এবং সেই আইটেমটিতে প্রয়োগ করা সমস্ত লেবেল তালিকাভুক্ত করতে হয়।

advanced/driveLabels.gs
/**
 * List Labels on a Drive Item
 * Fetches a Drive Item and prints all applied values along with their to their
 * human-readable names.
 *
 * @param {string} fileId The Drive File ID
 */
function listLabelsOnDriveItem(fileId) {
  try {
    const appliedLabels = Drive.Files.listLabels(fileId);

    console.log(
      "%d label(s) are applied to this file",
      appliedLabels.labels.length,
    );

    for (const appliedLabel of appliedLabels.labels) {
      // Resource name of the label at the applied revision.
      const labelName = `labels/${appliedLabel.id}@${appliedLabel.revisionId}`;

      console.log("Fetching Label: %s", labelName);
      const label = DriveLabels.Labels.get(labelName, {
        view: "LABEL_VIEW_FULL",
      });

      console.log("Label Title: %s", label.properties.title);

      for (const fieldId of Object.keys(appliedLabel.fields)) {
        const fieldValue = appliedLabel.fields[fieldId];
        const field = label.fields.find((f) => f.id === fieldId);

        console.log(
          `Field ID: ${field.id}, Display Name: ${field.properties.displayName}`,
        );
        switch (fieldValue.valueType) {
          case "text":
            console.log("Text: %s", fieldValue.text[0]);
            break;
          case "integer":
            console.log("Integer: %d", fieldValue.integer[0]);
            break;
          case "dateString":
            console.log("Date: %s", fieldValue.dateString[0]);
            break;
          case "user": {
            const user = fieldValue.user
              .map((user) => {
                return `${user.emailAddress}: ${user.displayName}`;
              })
              .join(", ");
            console.log(`User: ${user}`);
            break;
          }
          case "selection": {
            const choices = fieldValue.selection.map((choiceId) => {
              return field.selectionOptions.choices.find(
                (choice) => choice.id === choiceId,
              );
            });
            const selection = choices
              .map((choice) => {
                return `${choice.id}: ${choice.properties.displayName}`;
              })
              .join(", ");
            console.log(`Selection: ${selection}`);
            break;
          }
          default:
            console.log("Unknown: %s", fieldValue.valueType);
            console.log(fieldValue.value);
        }
      }
    }
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log("Failed with error %s", err.message);
  }
}