Di chuyển từ API Drive

Tài liệu này trình bày cách di chuyển mã bằng API Drive để quản lý quyền sang API Looker Studio. Đối với các điểm cuối API Drive phổ biến, bảng này sẽ hiển thị mã API Looker Studio tương ứng.

Files

Đối với các điểm cuối của tệp API Drive, API Looker Studio chỉ có một điểm cuối tương đương 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:

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

Xem nội dung 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 thành phần Looker Studio và đối tượng này luôn tồn tại.

Danh sách

Không có sự đối sánh 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ự nhau. Điểm khác biệt chính là tệp trên Drive có thể có nhiều đối tượng quyền, còn Looker Studio có đúng 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:

Drive

Mã sau đây liệt kê tất cả các đối tượng quyền cho API Drive. Tuỳ thuộc vào mã, bạn có thể gọi phương thức này nhiều lần bằng cách sử dụng mã phân trang (như hiển thị) để đảm bảo bạn có thể xem tất cả các quyền được đặt 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 tài sả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, các API Looker Studio và Drive có chức năng rất giống nhau. Điểm khác biệt chính là bạn không thể đặt expirationTime cho quyền của 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:

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

Để biết các lựa chọn thay thế cụ thể cho trường hợp sử dụng, hãy xem: