Cómo migrar desde la API de Drive

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

Archivos

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

Lista

API Método Extremo
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 Extremo
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 permisos para un recurso de Looker Studio y siempre existe.

Lista

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

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

Comparación:

Drive

El siguiente código enumera todos los objetos de permisos para la API de Drive. Según el código que tengas, puedes llamar a este método varias veces con paginación tokens (como se muestra) para asegurarte de que puedas ver todos los permisos que se configuraron 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 es necesario no debes 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 una configuración muy parecida funcionalidad. La principal diferencia es que no puedes establecer un expirationTime en un permiso de Looker Studio.

API Método Extremo
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 para casos de uso, consulta lo siguiente: