Миграция с Drive API

В этом документе описывается, как перенести код с помощью Drive API для управления разрешениями в Looker Studio API. Для распространенных конечных точек Drive API отображается соответствующий код API Looker Studio.

Файлы

Что касается конечных точек файлов API Диска, API Looker Studio имеет только конечную точку, эквивалентную конечной точке Files: list :.

Список

API Метод Конечная точка
Водить машину POST /drive/v3/files
Лукер Студия GET /v1/assets:search

Сравнение:

Водить машину

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
fetch(`https://www.googleapis.com/drive/v3/files`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  },
  method: "POST",
})

Лукер Студия

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
fetch(`https://datastudio.googleapis.com/v1/assets:search?assetTypes={ASSET_TYPE}`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  }
})

См. поисковые ресурсы .

Разрешения

Создать, удалить и получить

API Метод Конечная точка
Водить машину POST /drive/v3/files/fileId/permissions
Водить машину DELETE /drive/v3/files/fileId/permissions/permissionId
Водить машину GET /drive/v3/files/fileId/permissions/permissionId

В API Looker Studio нет соответствующих конечных точек для управления несколькими объектами Permissions . Для ресурса Looker Studio существует только один объект разрешений, и он существует всегда.

Список

Между Drive и Looker Studio нет однозначного соответствия, но конечные точки служат схожим целям. Основное отличие состоит в том, что файл на Диске может иметь множество объектов разрешений, а Looker Studio — только один.

API Метод Конечная точка
Водить машину GET /drive/v3/files/fileId/permissions
Лукер Студия GET /v1/assets/assetId/permissions

Сравнение:

Водить машину

В следующем коде перечислены все объекты разрешений для Drive API. В зависимости от вашего кода вы можете вызывать этот метод несколько раз, используя токены нумерации страниц (как показано), чтобы убедиться, что вы видите все разрешения, установленные для файла.

const fileId = '123'; // This should be replaced with a valid Drive ID.
const oAuthToken = '123'; // This should be replaced with a valid OAuth token.
let nextPageToken = undefined;
let permissions = [];
do {
  const permissionsData = await fetch(`https://www.googleapis.com/drive/v3/files/${fileId}/permissions`, {
    headers: {
      Authorization: `Bearer ${oAuthToken}`
    }
  });
  nextPageToken = permissionsData.nextPageToken;
  permissions = permissions.concat(permissionsData.permissions)
} while (nextPageToken !== undefined);

Лукер Студия

Поскольку для ресурса Looker Studio существует только один объект разрешений, вам не нужно учитывать разбиение на страницы.

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
const assetId = '123' // This should be replaced with a valid asset ID.
fetch(`https://datastudio.googleapis.com/v1/assets/{ASSET_ID}/permissions`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  }
}

См. получение разрешений .

Обновлять

Для обновления разрешений API-интерфейсы Looker Studio и Drive имеют очень схожие функции. Основное отличие заключается в том, что вы не можете установить expirationTime для разрешения Looker Studio.

API Метод Конечная точка
Водить машину PATCH /drive/v3/files/fileId/permissions/permissionId
Лукер Студия PATCH /v1/assets/assetId/permissions

Сравнение:

Водить машину

const fileId = '123'; // This should be replaced with a valid Drive ID.
const oAuthToken = '123'; // This should be replaced with a valid OAuth token.
const newPermissionsObject = {
  expirationTime: '...',
  role: 'owner', // Or any other option
}
fetch(`https://www.googleapis.com/drive/v3/files/${fileId}/permissions/permissionId`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  },
  method: "PATCH",
  body: JSON.stringify(newPermissionsObject)
})

Лукер Студия

const oAuthToken = '123' // This should be replaced with a valid OAuth token.
const assetId = '123' // This should be replaced with a valid asset ID.
const newPermissionsObject = {
  permissions: {
    //...
  }
}

fetch(`https://datastudio.googleapis.com/v1/assets/${assetId}/permissions`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  },
  method: "PATCH",
  body: JSON.stringify({
    name: assetId,
    permissions: newPermissionsObject
  })
})

Альтернативы для конкретного случая использования см. в разделе: