Usługa zaawansowanych etykiet na Dysku

Utwórz etykiety i zarządzaj nimi w przypadku plików i folderów na Dysku za pomocą usługi Etykiety na Dysku Google. Dzięki tej zaawansowanej usłudze możesz korzystać ze wszystkich funkcji interfejsu Drive Labels API w Apps Script.

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

Dokumentacja

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

Aby zgłaszać problemy i uzyskać inną pomoc, zapoznaj się z przewodnikiem pomocy interfejsu API etykiet w Dysk Google.

Przykładowy kod

Poniżej znajduje się przykładowy kod, który korzysta z wersji 2 interfejsu API.

Etykiety list

Poniższy przykładowy kod pokazuje, jak uzyskać listę etykiet dostępnych dla użytkownika przesył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ę za pomocą jej nazwy zasobu (czyli ciągu znaków etykiety). Aby znaleźć nazwę etykiety, pobierz listę etykiet za pomocą interfejsu API lub użyj menedżera etykiet w 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 etykiet elementu na Dysku

Poniższy przykładowy kod pokazuje, jak pobrać element z Drive i wyświetlić wszystkie przypisane do niego etykiety.

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