Cómo migrar desde la API de Drive

En este documento, se describe cómo migrar código mediante la API de Drive para la administración de permisos a la API de Looker Studio. Para los extremos comunes de la API de Drive, se muestra el código de la API de Looker Studio correspondiente.

Files

En el caso de los extremos de los archivos de la API de Drive, la API de Looker Studio solo tiene un extremo equivalente para el extremo Files: list.

Ir a la lista

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

Comparación:

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

Consulta los recursos de búsqueda.

Permisos

Crea, borra y obtén

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

No hay extremos correspondientes en la API de Looker Studio para administrar varios objetos Permissions. Solo hay un objeto de permiso para un elemento de Looker Studio y siempre existe.

Ir a la lista

No hay una coincidencia 1 a 1 entre Drive y Looker Studio, pero los extremos tienen objetivos similares. La diferencia principal es que un archivo de Drive puede tener muchos objetos de permisos, y Looker Studio tiene solo uno.

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

Comparación:

Drive

En el siguiente código, se enumeran todos los objetos de permisos para la API de Drive. Según tu código, puedes llamar a este método varias veces mediante tokens de paginación (como se muestra) para asegurarte de que puedes ver todos los permisos configurados para un archivo.

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 solo hay un objeto de permiso para un recurso de Looker Studio, no tienes que tener en cuenta la paginación.

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

Consulta cómo obtener permisos.

Actualizar

Para actualizar los permisos, las APIs de Looker Studio y Drive tienen funciones muy similares. La diferencia principal es que no puedes establecer un expirationTime en un permiso de Looker Studio.

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

Comparación:

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 conocer alternativas específicas según el caso de uso, consulta lo siguiente: