Расширенная служба меток дисков

с использованием расширенной службы «Метки диска» в Google Apps Script.

Создавайте и управляйте метками для файлов и папок Google Диска с помощью расширенного сервиса Google Метки Диска. Этот расширенный сервис позволяет использовать все возможности API Меток Диска в Google Apps Script.

Для добавления или удаления меток диска используйте расширенные настройки диска .

Это расширенная услуга, которую необходимо включить перед использованием .

Ссылка

Для получения дополнительной информации об этой услуге см. документацию по API меток Google Drive . Как и все расширенные сервисы в Apps Script, сервис API меток Drive использует те же объекты, методы и параметры, что и публичный API.

Чтобы сообщить о проблемах и получить дополнительную поддержку, ознакомьтесь с руководством по поддержке API меток Google Drive.

Пример кода

В приведенном ниже примере кода используется версия 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 или воспользуйтесь менеджером меток Google Диска. Для получения дополнительной информации о менеджере меток перейдите в раздел «Управление метками Google Диска» .

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

Список меток для элемента на диске

Приведённый ниже пример кода показывает, как получить элемент Google Диска и вывести список всех меток, присвоенных этому элементу.

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