Di chuyển từ API Drive

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

Tệp

Đối với các điểm cuối tệp Drive API, Looker Studio API 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
Drive 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 thành phần tìm kiếm.

Quyền

Tạo, xoá và nhận

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

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

Danh sách

Không có sự tương đồng 1-1 giữa Drive và Looker Studio, nhưng các điểm cuối này có mục tiêu tương tự nhau. Điểm khác biệt chính là một tệp trên Drive có thể có nhiều đối tượng quyền, còn Looker Studio chỉ có một đối tượng quyền.

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

So sánh:

Drive

Đoạn mã sau đây liệt kê tất cả các đối tượng quyền cho Drive API. Tuỳ thuộc vào mã của bạn, bạn có thể gọi phương thức này nhiều lần bằng cách sử dụng mã thông báo phân trang (như minh hoạ) để đảm bảo bạn có thể thấy 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 một 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 xin cấp quyền.

Cập nhật

Để cập nhật quyền, 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 truy cập vào Looker Studio.

API Phương thức Điểm cuối
Drive 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ể theo trường hợp sử dụng, hãy xem: