מעבר מה-API של Drive

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

Files

בנקודות הקצה של קובצי Drive API, ל-Looker Studio API יש רק נקודת קצה (endpoint) מקבילה עבור נקודת הקצה Files: list.

רשימה

API שיטה נקודת קצה
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}`
  }
})

כדאי לעיין בקטע נכסי חיפוש.

הרשאות

יוצרים, מוחקים ומקבלים

API שיטה נקודת קצה
Drive POST /drive/v3/files/fileId/permissions
Drive DELETE /drive/v3/files/fileId/permissions/permissionId
Drive GET /drive/v3/files/fileId/permissions/permissionId

אין נקודות קצה (endpoint) תואמות ב-Looker Studio API לניהול מספר אובייקטים של Permissions. לנכס Looker Studio יש רק אובייקט הרשאה אחד, והוא תמיד קיים.

רשימה

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

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

השוואה:

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

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 API לעדכון ההרשאות דומות מאוד. ההבדל העיקרי הוא שאי אפשר להגדיר expirationTime בהרשאות ב-Looker Studio.

API שיטה נקודת קצה
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
  })
})

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