שירות מתקדם של תוויות ב-Drive

ליצור ולנהל תוויות לקבצים ולתיקיות ב-Drive באמצעות השירות המתקדם 'תוויות' של Google Drive. בעזרת השירות המתקדם הזה, אתם יכולים להשתמש בכל התכונות של Drive Labels API ב-Apps Script.

כדי להוסיף תוויות ב-Drive או להסיר אותן, צריך להשתמש בשירות המתקדם של Drive.

חומרי עזר

מידע נוסף על השירות הזה זמין במאמרי העזרה של Google Drive Labels API. בדומה לכל השירותים המתקדמים ב-Apps Script, שירות Drive Labels API משתמש באותם אובייקטים, שיטות ופרמטרים כמו ה-API הציבורי.

כדי לדווח על בעיות ולמצוא תמיכה נוספת, אפשר לעיין במדריך התמיכה של Google Drive Labels API.

קוד לדוגמה

בדוגמת הקוד שבהמשך נעשה שימוש בגרסה 2 של ה-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 או להשתמש בכלי לניהול תוויות ב-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);

    appliedLabels.labels.forEach((appliedLabel) => {
      // 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);

      Object.keys(appliedLabel.fields).forEach((fieldId) => {
        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);
  }
}