Migrazione dall'API Drive

Questo documento descrive come eseguire la migrazione del codice all'API Looker Studio utilizzando l'API Drive per la gestione delle autorizzazioni. Per gli endpoint comuni dell'API Drive, viene mostrato il codice dell'API Looker Studio corrispondente.

Files

Per gli endpoint dei file dell'API Drive, l'API Looker Studio ha un endpoint equivalente solo per l'endpoint Files: list.

Elenco

API Metodo Endpoint
Drive POST /drive/v3/files
Looker Studio GET /v1/assets:search

Confronto:

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 gli asset di ricerca.

Autorizzazioni

Crea, elimina e ottieni

API Metodo Endpoint
Drive POST /drive/v3/files/fileId/permissions
Drive DELETE /drive/v3/files/fileId/permissions/permissionId
Drive GET /drive/v3/files/fileId/permissions/permissionId

Non esistono endpoint corrispondenti nell'API Looker Studio per la gestione di più oggetti Permissions. Esiste un solo oggetto autorizzazioni per un asset di Looker Studio ed esiste sempre.

Elenco

Non esiste una corrispondenza 1 a 1 tra Drive e Looker Studio, ma gli endpoint servono obiettivi simili. La differenza principale è che un file di Drive può avere molti oggetti di autorizzazione e Looker Studio ne ha esattamente uno.

API Metodo Endpoint
Drive GET /drive/v3/files/fileId/permissions
Looker Studio GET /v1/assets/assetId/permissions

Confronto:

Drive

Il codice seguente elenca tutti gli oggetti di autorizzazione per l'API Drive. A seconda del codice, puoi chiamare questo metodo più volte utilizzando i token di impaginazione (come mostrato) per assicurarti di vedere tutte le autorizzazioni impostate per un file.

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

Poiché esiste un solo oggetto di autorizzazione per un asset di Looker Studio, non è necessario tenere conto dell'impaginazione.

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

Vedi Ottenere le autorizzazioni.

Aggiorna

Per l'aggiornamento delle autorizzazioni, le API Looker Studio e Drive hanno funzionalità molto simili. La differenza principale è che non puoi impostare un expirationTime in un'autorizzazione di Looker Studio.

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

Confronto:

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

Per alternative specifiche per i diversi casi d'uso, vedi: