מעבר מה-API של Drive

במסמך הזה מוסבר איך להעביר קוד שמשתמש ב-Drive API לניהול הרשאות אל Data Studio API. לנקודות קצה נפוצות של Drive API, מוצג קוד ה-API התואם של Data Studio.

קבצים

במקרה של נקודות הקצה של קבצים ב-Drive API, ל-Data Studio API יש רק נקודת קצה מקבילה לנקודת הקצה Files: list.

רשימה

API שיטה נקודת קצה
Drive POST /drive/v3/files
Data Studio GET /v1/assets:search

השוואה:

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

Data 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 שיטה נקודת קצה
Drive POST /drive/v3/files/fileId/permissions
Drive DELETE /drive/v3/files/fileId/permissions/permissionId
Drive GET /drive/v3/files/fileId/permissions/permissionId

אין נקודות קצה תואמות ב-Data Studio API לניהול של כמה אובייקטים מסוג Permissions. יש רק אובייקט הרשאות אחד לנכס ב-Data Studio, והוא תמיד קיים.

רשימה

אין התאמה מלאה בין Drive לבין Data Studio, אבל נקודות הקצה משרתות מטרות דומות. ההבדל העיקרי הוא שלקובץ ב-Drive יכולים להיות הרבה אובייקטים של הרשאות, ול-Data Studio יש בדיוק אחד.

API שיטה נקודת קצה
Drive GET /drive/v3/files/fileId/permissions
Data Studio GET /v1/assets/assetId/permissions

השוואה:

Drive

בדוגמה הבאה מוצגת רשימה של כל אובייקטי ההרשאות של 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);

Data Studio

מכיוון שיש רק אובייקט הרשאה אחד לנכס ב-Data 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 של Data Studio ו-Drive דומים מאוד מבחינת הפונקציונליות שלהם לעדכון הרשאות. ההבדל העיקרי הוא שאי אפשר להגדיר expirationTime להרשאה ב-Data Studio.

API שיטה נקודת קצה
Drive PATCH /drive/v3/files/fileId/permissions/permissionId
Data Studio PATCH /v1/assets/assetId/permissions

השוואה:

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

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

למידע על חלופות ספציפיות לתרחישי שימוש, אפשר לעיין במאמרים הבאים: