מעבר מה-API של Drive

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

קבצים

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

רשימה

API שיטה נקודת קצה
Drive POST /drive/v3/files
Looker 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",
})

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

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

רשימה

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

API שיטה נקודת קצה
Drive GET /drive/v3/files/fileId/permissions
Looker 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);

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 ושל Drive דומים מאוד החדשה. ההבדל העיקרי הוא שאי אפשר להגדיר expirationTime הרשאה ב-Looker Studio.

API שיטה נקודת קצה
Drive PATCH /drive/v3/files/fileId/permissions/permissionId
Looker 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)
})

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

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