Usługa zaawansowanych etykiet na Dysku

Tworzenie etykiet do plików i folderów na Dysku Google oraz zarządzanie nimi za pomocą usługi zaawansowanej Etykiety Dysku Google. Ta zaawansowana usługa umożliwia korzystanie ze wszystkich funkcji interfejsu Drive Labels API w Apps Script.

Aby zastosować lub usunąć etykiety na Dysku, użyj zaawansowanej usługi Dysku.

Plik referencyjny

Więcej informacji o tej usłudze znajdziesz w dokumentacji interfejsu Google Drive Labels API. Podobnie jak wszystkie usługi zaawansowane w Apps Script, usługa Drive Labels API używa tych samych obiektów, metod i parametrów co publiczny interfejs API.

Aby zgłosić problemy i uzyskać pomoc, zapoznaj się z przewodnikiem pomocy dotyczącym interfejsu Google Drive Labels API.

Przykładowy kod

Przykładowy kod poniżej korzysta z wersji 2 interfejsu API.

Wyświetlanie listy etykiet

Poniższy przykładowy kod pokazuje, jak uzyskać listę etykiet dostępnych dla użytkownika wysyłającego żądanie.

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

Pobieranie etykiety

Poniższy przykładowy kod pokazuje, jak uzyskać pojedynczą etykietę na podstawie jej nazwy zasobu (czyli wartości ciągu etykiety). Aby znaleźć nazwę etykiety, pobierz listę etykiet za pomocą interfejsu API lub użyj menedżera etykiet na Dysku. Więcej informacji o menedżerze etykiet znajdziesz w artykule Zarządzanie etykietami Dysku.

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

Wyświetlanie listy etykiet elementu na Dysku

Poniższy przykładowy kod pokazuje, jak pobrać element na Dysku i wyświetlić listę wszystkich etykiet zastosowanych do tego elementu.

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