Migração da Drive API

Neste documento, descrevemos como migrar o código para a API Looker Studio usando a API Drive para gerenciar permissões. Ele mostra o código correspondente da API Looker Studio para endpoints comuns da API Drive.

Arquivos

A API Looker Studio tem apenas um endpoint equivalente ao endpoint Files: list dos arquivos da API Drive.

Lista

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

Comparação:

Dirigir

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 recurso do Looker Studio e ele sempre existe.

Lista

Não há uma correspondência exata entre o Drive e o Looker Studio, mas os endpoints têm metas semelhantes. A principal diferença é que um arquivo do Drive pode ter muitos objetos de permissões, 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, você não precisa 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 funcionalidades muito semelhantes. A principal diferença é que não é possível definir um expirationTime em uma 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:

Dirigir

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: