שירות Drive מתקדם

השירות המתקדם של Drive מאפשר להשתמש Google Drive API ב-Apps Script. דומה מאוד Drive מובנה ב-Apps Script service, ה-API הזה מאפשר לסקריפטים ליצור, למצוא, ולשנות קבצים ותיקיות ב-Google Drive. ברוב המקרים, מנוע החיפוש המובנה קל יותר להשתמש בשירות, אבל השירות המתקדם הזה מספק כולל גישה למאפייני קבצים מותאמים אישית ולגרסאות קודמות של קבצים ותיקיות.

חומרי עזר

לקבלת מידע מפורט על השירות, עיינו במאמרי העזרה תיעוד עבור Google Drive API. כמו כולם שירותים מתקדמים ב-Apps Script, שירות Drive משתמש באותם אובייקטים, שיטות ופרמטרים כמו ממשק ה-API הציבורי. למידע נוסף, ראו כיצד חתימות של שיטות נקבע.

כדי לדווח על בעיות ולקבל תמיכה נוספת, אפשר לעיין בתמיכה של Drive API guide.

קוד לדוגמה

דוגמאות הקוד בקטע הזה הן גרסה 3 של ה-API.

העלאת קבצים

דוגמת הקוד הבאה מראה איך לשמור קובץ בחשבון של משתמש ב-Drive.

advanced/drive.gs
/**
 * Uploads a new file to the user's Drive.
 */
function uploadFile() {
  try {
    // Makes a request to fetch a URL.
    const image = UrlFetchApp.fetch('http://goo.gl/nd7zjB').getBlob();
    let file = {
      name: 'google_logo.png',
      mimeType: 'image/png'
    };
    // Create a file in the user's Drive.
    file = Drive.Files.create(file, image, {'fields': 'id,size'});
    console.log('ID: %s, File size (bytes): %s', file.id, file.size);
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to upload file with error %s', err.message);
  }
}

הצגת רשימה של תיקיות

דוגמת הקוד הבאה מראה איך לראות את רשימת התיקיות ברמה העליונה בתיקייה של המשתמש ב-Drive. שימו לב לשימוש באסימונים של דפים כדי לגשת לרשימה המלאה של תוצאות.

advanced/drive.gs
/**
 * Lists the top-level folders in the user's Drive.
 */
function listRootFolders() {
  const query = '"root" in parents and trashed = false and ' +
    'mimeType = "application/vnd.google-apps.folder"';
  let folders;
  let pageToken = null;
  do {
    try {
      folders = Drive.Files.list({
        q: query,
        pageSize: 100,
        pageToken: pageToken
      });
      if (!folders.files || folders.files.length === 0) {
        console.log('All folders found.');
        return;
      }
      for (let i = 0; i < folders.files.length; i++) {
        const folder = folders.files[i];
        console.log('%s (ID: %s)', folder.name, folder.id);
      }
      pageToken = folders.nextPageToken;
    } catch (err) {
      // TODO (developer) - Handle exception
      console.log('Failed with error %s', err.message);
    }
  } while (pageToken);
}

הצגת רשימה של גרסאות קודמות

דוגמת הקוד הבאה מראה איך להציג רשימה של גרסאות קודמות של קובץ נתון. הערה בקבצים מסוימים יכולים להיות כמה גרסאות, וצריך להשתמש באסימוני דפים כדי כדי לגשת לרשימת התוצאות המלאה.

advanced/drive.gs
/**
 * Lists the revisions of a given file.
 * @param {string} fileId The ID of the file to list revisions for.
 */
function listRevisions(fileId) {
  let revisions;
  const pageToken = null;
  do {
    try {
      revisions = Drive.Revisions.list(
          fileId,
          {'fields': 'revisions(modifiedTime,size),nextPageToken'});
      if (!revisions.revisions || revisions.revisions.length === 0) {
        console.log('All revisions found.');
        return;
      }
      for (let i = 0; i < revisions.revisions.length; i++) {
        const revision = revisions.revisions[i];
        const date = new Date(revision.modifiedTime);
        console.log('Date: %s, File size (bytes): %s', date.toLocaleString(),
            revision.size);
      }
      pageToken = revisions.nextPageToken;
    } catch (err) {
      // TODO (developer) - Handle exception
      console.log('Failed with error %s', err.message);
    }
  } while (pageToken);
}

הוספת מאפייני קובץ

דוגמת הקוד הבאה משתמשת בשדה appProperties כדי להוסיף פרמטר מותאם אישית לקובץ. המאפיין המותאם אישית גלוי רק לסקריפט. כדי להוסיף להתאמה אישית של הקובץ שגלוי גם לאפליקציות אחרות, משתמשים השדה properties במקום זאת. מידע נוסף זמין במאמר הוספת קובץ מותאם אישית נכסים דיגיטליים.

advanced/drive.gs
/**
 * Adds a custom app property to a file. Unlike Apps Script's DocumentProperties,
 * Drive's custom file properties can be accessed outside of Apps Script and
 * by other applications; however, appProperties are only visible to the script.
 * @param {string} fileId The ID of the file to add the app property to.
 */
function addAppProperty(fileId) {
  try {
    let file = {
      'appProperties': {
        'department': 'Sales'
      }
    };
    // Updates a file to add an app property.
    file = Drive.Files.update(file, fileId, null, {'fields': 'id,appProperties'});
    console.log(
        'ID: %s, appProperties: %s',
        file.id,
        JSON.stringify(file.appProperties, null, 2));
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with error %s', err.message);
  }
}