نقل البيانات من Drive API

يوضح هذا المستند كيفية نقل الرمز باستخدام Drive API للحصول على الإذن واجهة برمجة تطبيقات Looker Studio. بالنسبة إلى نقاط نهاية Drive API الشائعة، تعرض رمز Looker Studio API المقابل

الملفات

بالنسبة إلى نقاط نهاية ملفات Drive API، تحتوي Looker Studio API فقط على واجهة برمجة تطبيقات مكافئة. لنقطة نهاية Files: list.

قائمة

واجهة برمجة التطبيقات الطريقة نقطة نهاية
Drive POST /drive/v3/files
Looker Studio GET /v1/assets:search

المقارنة:

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

اطّلِع على مواد عرض البحث.

الأذونات

الإنشاء والحذف والحصول

واجهة برمجة التطبيقات الطريقة نقطة نهاية
Drive POST /drive/v3/files/fileId/permissions
Drive DELETE /drive/v3/files/fileId/permissions/permissionId
Drive GET /drive/v3/files/fileId/permissions/permissionId

ما مِن نقاط نهاية مقابل في Looker Studio API لإدارة عدة كائنات Permissions. هناك كائن أذونات واحد فقط مادة عرض Looker Studio وهي متوفّرة دائمًا

قائمة

ما مِن تطابق تام بين Drive وLooker Studio، ولكن لا تتوفر نسبة تطابق بين نقاط النهاية. تخدم أهدافًا مماثلة. ويتمثل الاختلاف الرئيسي في أن ملف Drive يمكن أن يحتوي على العديد من وكائنات الأذونات، وLooker Studio لديها عنصر واحد فقط.

واجهة برمجة التطبيقات الطريقة نقطة نهاية
Drive GET /drive/v3/files/fileId/permissions
Looker Studio GET /v1/assets/assetId/permissions

المقارنة:

Google Drive

يعرض الرمز التالي جميع عناصر الأذونات الخاصة بواجهة برمجة تطبيقات 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.
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 وواجهات برمجة تطبيقات Drive الأخرى. ويكمن الاختلاف الرئيسي في عدم إمكانية ضبط expirationTime على إذن Looker Studio

واجهة برمجة التطبيقات الطريقة نقطة نهاية
Drive PATCH /drive/v3/files/fileId/permissions/permissionId
Looker Studio PATCH /v1/assets/assetId/permissions

المقارنة:

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

للحصول على بدائل خاصة بحالات الاستخدام، يُرجى الاطّلاع على: