บริการไดรฟ์ขั้นสูง

บริการไดรฟ์ขั้นสูงช่วยให้คุณใช้ API ของ Google ไดรฟ์ใน Apps Script ได้ API นี้ช่วยให้สคริปต์สร้าง ค้นหา และแก้ไขไฟล์และโฟลเดอร์ใน Google ไดรฟ์ได้เช่นเดียวกับบริการไดรฟ์ในตัวของ Apps Script ในกรณีส่วนใหญ่ บริการในตัวจะใช้งานง่ายกว่า แต่บริการขั้นสูงนี้มีฟีเจอร์พิเศษบางอย่าง เช่น การเข้าถึงพร็อพเพอร์ตี้ไฟล์ที่กำหนดเอง และการแก้ไขไฟล์และโฟลเดอร์

ข้อมูลอ้างอิง

หากต้องการข้อมูลโดยละเอียดเกี่ยวกับบริการนี้ โปรดดูเอกสารอ้างอิงสำหรับ Google Drive API เช่นเดียวกับบริการขั้นสูงทั้งหมดใน Apps Script บริการไดรฟ์ขั้นสูงจะใช้ออบเจ็กต์ เมธอด และพารามิเตอร์เดียวกันกับ API สาธารณะ ดูข้อมูลเพิ่มเติมได้ที่วิธีกำหนดลายเซ็นของเมธอด

หากต้องการรายงานปัญหาและค้นหาการสนับสนุนอื่นๆ โปรดดูคู่มือการสนับสนุนสำหรับ Drive API

รหัสตัวอย่าง

ตัวอย่างโค้ดในส่วนนี้ใช้ API เวอร์ชัน 3

อัปโหลดไฟล์

ตัวอย่างโค้ดต่อไปนี้จะแสดงวิธีบันทึกไฟล์ไปยังไดรฟ์ของผู้ใช้

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

แสดงรายการโฟลเดอร์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีแสดงรายการโฟลเดอร์ระดับบนสุดในไดรฟ์ของผู้ใช้ อย่าลืมใช้โทเค็นของหน้าเว็บเพื่อเข้าถึงรายการผลการค้นหาทั้งหมด

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