Di chuyển từ API Drive

Tài liệu này trình bày cách di chuyển mã bằng cách sử dụng API Drive để cấp quyền API Looker Studio. Đối với các điểm cuối phổ biến của API Drive, công cụ này cho biết mã Looker Studio API tương ứng.

Files

Đối với các điểm cuối tệp API Drive, API Looker Studio chỉ có điểm cuối tương đương điểm cuối dành cho điểm cuối Files: list.

Danh sách

API Phương thức Điểm cuối
Lái xe POST /drive/v3/files
Looker Studio GET /v1/assets:search

So sánh:

Lái xe

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

Xem thành phần tìm kiếm.

Quyền

Tạo, xoá và tải

API Phương thức Điểm cuối
Lái xe POST /drive/v3/files/fileId/permissions
Lái xe DELETE /drive/v3/files/fileId/permissions/permissionId
Lái xe GET /drive/v3/files/fileId/permissions/permissionId

Không có điểm cuối tương ứng trong API Looker Studio để quản lý nhiều đối tượng Permissions. Chỉ có một đối tượng quyền cho mỗi Thành phần trong Looker Studio và thành phần này luôn tồn tại.

Danh sách

Không có kết quả trùng khớp 1:1 giữa Drive và Looker Studio, nhưng các điểm cuối phục vụ các mục tiêu tương tự. Điểm khác biệt chính là một tệp trên Drive có thể có nhiều và Looker Studio chỉ có duy nhất một đối tượng quyền.

API Phương thức Điểm cuối
Lái xe GET /drive/v3/files/fileId/permissions
Looker Studio GET /v1/assets/assetId/permissions

So sánh:

Lái xe

Mã sau đây liệt kê tất cả đối tượng quyền cho API Drive. Tuỳ thuộc vào mã nguồn, bạn có thể gọi phương thức này nhiều lần bằng tính năng phân trang mã thông báo (như được hiển thị) để đảm bảo bạn có thể thấy tất cả các quyền được thiết lập cho một tệp.

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

Vì chỉ có một đối tượng quyền cho mỗi thành phần Looker Studio nên bạn không cần phải tính đến việc phân trang.

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

Xem phần yêu cầu cấp quyền.

Cập nhật

Để cập nhật quyền, API Looker Studio và Drive có cấu trúc tương tự nhau của Google. Sự khác biệt chính là bạn không thể đặt expirationTime trên Quyền đối với Looker Studio.

API Phương thức Điểm cuối
Lái xe PATCH /drive/v3/files/fileId/permissions/permissionId
Looker Studio PATCH /v1/assets/assetId/permissions

So sánh:

Lái xe

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

Để biết các giải pháp thay thế cụ thể theo trường hợp sử dụng, hãy xem: