خدمة التصنيفات المتقدّمة في Drive

استخدام خدمة "تصنيفات Drive" المتقدّمة في "برمجة تطبيقات Google"

يمكنك إنشاء تصنيفات وإدارتها لملفاتك ومجلداتك في Drive باستخدام خدمة Google Drive Labels المتقدّمة. باستخدام هذه الخدمة المتقدّمة، يمكنك الاستفادة من جميع ميزات Drive Labels API في "برمجة تطبيقات Google".

لتطبيق تصنيفات Drive أو إزالتها، استخدِم خدمة Drive المتقدّمة.

هذه خدمة متقدّمة يجب تفعيلها قبل الاستخدام.

مراجع

لمزيد من المعلومات حول هذه الخدمة، يُرجى الاطّلاع على مستندات Google Drive Labels API. مثل جميع الخدمات المتقدّمة في Apps Script، تستخدم خدمة Drive Labels API العناصر والطرق والمعلَمات نفسها التي تستخدمها واجهة برمجة التطبيقات العامة.

للإبلاغ عن المشاكل والعثور على دعم آخر، يُرجى الاطّلاع على دليل الدعم الخاص بـ Google Drive Labels API.

نموذج التعليمات البرمجية

يستخدم نموذج الرمز التالي الإصدار 2 من واجهة برمجة التطبيقات.

قائمة التصنيفات

تعرض عيّنة الرمز البرمجي التالية كيفية الحصول على قائمة بالتصنيفات المتاحة للمستخدم الذي يرسل الطلب.

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

الحصول على تصنيف

يوضّح نموذج الرمز البرمجي التالي كيفية الحصول على تصنيف واحد من خلال اسم المورد (وهو قيمة السلسلة الخاصة بالتصنيف). للعثور على اسم التصنيف، احصل على قائمة بالتصنيفات من خلال واجهة برمجة التطبيقات أو استخدِم أداة إدارة التصنيفات في Drive. لمزيد من المعلومات حول أداة إدارة التصنيفات، انتقِل إلى إدارة تصنيفات Drive.

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

يوضّح نموذج الرمز التالي كيفية الحصول على عنصر في 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);
  }
}