การย้ายข้อมูลจาก Drive API

เอกสารนี้อธิบายวิธีเปลี่ยนโค้ดที่ใช้ Drive API สำหรับการจัดการสิทธิ์ ไปเป็น Looker Studio API สำหรับปลายทาง Drive 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 จะไม่ได้มีฟีเจอร์ที่ตรงกันแบบ 1 ต่อ 1 แต่ปลายทาง มีเป้าหมายที่คล้ายกัน ความแตกต่างหลักคือไฟล์ในไดรฟ์มีออบเจ็กต์สิทธิ์ได้หลายรายการ และ 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}`
  }
}

ดูรับสิทธิ์

อัปเดต

สำหรับสิทธิ์การอัปเดต API ของ Looker Studio และไดรฟ์มีฟังก์ชันการทำงานที่คล้ายกันมาก ความแตกต่างหลักคือคุณไม่สามารถตั้งค่า 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
  })
})

ดูทางเลือกอื่นสำหรับกรณีการใช้งานที่เฉพาะเจาะจงได้ที่