سرویس برچسب‌های درایو پیشرفته

با سرویس پیشرفته Google Drive Labels برای فایل‌ها و پوشه‌های Drive خود برچسب ایجاد و مدیریت کنید. با استفاده از این سرویس پیشرفته، می‌توانید از تمام ویژگی‌های Drive Labels API در Apps Script استفاده کنید.

برای اعمال یا حذف برچسب‌های درایو، از سرویس پیشرفته درایو استفاده کنید.

مرجع

برای اطلاعات بیشتر در مورد این سرویس، به مستندات مربوط به Google Drive Labels API مراجعه کنید. مانند تمام سرویس‌های پیشرفته در Apps Script، سرویس Drive Labels API از همان اشیاء، روش‌ها و پارامترهای 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 دریافت کنید یا از مدیر برچسب‌های درایو استفاده کنید. برای اطلاعات بیشتر در مورد مدیر برچسب‌ها، به مدیریت برچسب‌های درایو بروید.

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);
  }
}

برچسب‌های یک آیتم درایو را فهرست کنید

نمونه کد زیر نحوه دریافت یک آیتم Drive و لیست کردن تمام برچسب‌های اعمال شده به آن آیتم را نشان می‌دهد.

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);
  }
}