Migração da Drive API

Este documento descreve como migrar código usando a API Drive para obter permissões para a API Looker Studio. Para endpoints comuns da API Drive, ele mostra o código correspondente da API Looker Studio.

Arquivos

Para os endpoints de arquivos da API Drive, a API Looker Studio tem apenas um equivalente endpoint de API para o endpoint Files: list.

Lista

API Método Endpoint
Drive POST /drive/v3/files
Looker Studio GET /v1/assets:search

Comparação:

Drive

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

Veja os recursos de pesquisa.

Permissões

Create, delete e get

API Método Endpoint
Drive POST /drive/v3/files/fileId/permissions
Drive DELETE /drive/v3/files/fileId/permissions/permissionId
Drive GET /drive/v3/files/fileId/permissions/permissionId

Não há endpoints correspondentes na API Looker Studio para gerenciar vários objetos Permissions. Há apenas um objeto de permissões para um do Looker Studio, que sempre existe.

Lista

Não há uma correspondência direta entre o Drive e o Looker Studio, mas os endpoints e atendem a objetivos semelhantes. A principal diferença é que um arquivo do Drive pode ter vários objetos de permissão, e o Looker Studio tem exatamente um.

API Método Endpoint
Drive GET /drive/v3/files/fileId/permissions
Looker Studio GET /v1/assets/assetId/permissions

Comparação:

Drive

Com o código abaixo, é possível visualizar todos os objetos de permissões da API Drive. Dependendo do código, você pode chamar esse método várias vezes usando tokens de paginação, conforme mostramos a seguir, para garantir que todas as permissões definidas para um arquivo sejam exibidas.

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

Como há apenas um objeto de permissão para um recurso do Looker Studio, não é necessário ter que considerar a paginação.

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}`
  }
}

Consulte as permissões get.

Atualizar

Para atualizar as permissões, as APIs Looker Studio e Drive têm recursos muito semelhantes funcionalidade de armazenamento. A principal diferença é que não é possível definir um expirationTime em um Permissão do Looker Studio.

API Método Endpoint
Drive PATCH /drive/v3/files/fileId/permissions/permissionId
Looker Studio PATCH /v1/assets/assetId/permissions

Comparação:

Drive

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

Para ver outros casos de uso, consulte: