Миграция с Drive API

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

Файлы

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

Список

API Метод Конечная точка
Водить машину POST /drive/v3/files
Looker Studio 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",
})

Looker Studio

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 существует только один объект разрешений, и он всегда существует.

Список

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

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

Сравнение:

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

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

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

Поскольку для каждого ресурса 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 и Google Drive обладают очень схожей функциональностью. Основное различие заключается в том, что вы не можете установить expirationTime для разрешения в Looker Studio.

API Метод Конечная точка
Водить машину PATCH /drive/v3/files/fileId/permissions/permissionId
Looker Studio 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)
})

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

Варианты решения, специфичные для конкретных сценариев использования, см.: