从 Drive API 迁移

本文档简要介绍了如何使用 Drive API 迁移代码以获取权限 Looker Studio API 管理。对于常见的云端硬盘 API 端点,该部分会显示 相应的 Looker Studio API 代码。

文件

对于 Drive API 文件端点,Looker Studio API 只有一个等效项 端点为 Files: list 端点。

列表

API 方法 端点
云端硬盘 POST /drive/v3/files
Looker Studio GET /v1/assets:search

比较:

云端硬盘

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

请参阅搜索资源

权限

创建、删除和获取

API 方法 端点
云端硬盘 POST /drive/v3/files/fileId/permissions
云端硬盘 DELETE /drive/v3/files/fileId/permissions/permissionId
云端硬盘 GET /drive/v3/files/fileId/permissions/permissionId

Looker Studio API 中没有可用于管理的相应端点 多个 Permissions 对象。只有一个权限对象 Looker Studio 资源,并且它始终存在。

列表

云端硬盘和 Looker Studio 之间没有一对一的匹配关系,但端点 用于实现类似的目标。主要区别在于,云端硬盘文件可以有多个 而 Looker Studio 只有一个。

API 方法 端点
云端硬盘 GET /drive/v3/files/fileId/permissions
Looker Studio GET /v1/assets/assetId/permissions

比较:

云端硬盘

以下代码列出了 Drive API 的所有权限对象。借助代码,您可以使用分页令牌(如图所示)多次调用该方法,以确保您可以查看为某个文件设置的所有权限。

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

由于 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.
fetch(`https://datastudio.googleapis.com/v1/assets/{ASSET_ID}/permissions`, {
  headers: {
    Authorization: `Bearer ${oAuthToken}`
  }
}

请参阅获取权限

更新

在更新权限方面,Looker Studio API 和 Drive API 非常相似, 功能主要区别在于,您无法在expirationTime Looker Studio 权限。

API 方法 端点
云端硬盘 PATCH /drive/v3/files/fileId/permissions/permissionId
Looker Studio PATCH /v1/assets/assetId/permissions

比较:

云端硬盘

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

有关特定用例的替代方案,请参阅: