Gelişmiş Drive Hizmeti

Gelişmiş Drive hizmeti, Apps Komut Dosyası'nda Google Drive API'yi kullanmanıza olanak tanır. Apps Komut Dosyası'nın yerleşik Drive hizmetine benzer şekilde bu API, komut dosyalarının Google Drive'da dosya ve klasör oluşturmasına, bulmasına ve değiştirmesine olanak tanır. Çoğu durumda yerleşik hizmetin kullanımı daha kolaydır ancak bu gelişmiş hizmet, özel dosya özelliklerine erişim ve dosya ve klasör düzeltmeleri gibi birkaç ek özellik sunar.

Referans

Bu hizmet hakkında ayrıntılı bilgi için Google Drive API'nin referans belgelerine bakın. Apps Komut Dosyası'ndaki tüm gelişmiş hizmetler gibi gelişmiş Drive hizmeti de herkese açık API ile aynı nesneleri, yöntemleri ve parametreleri kullanır. Daha fazla bilgi için Metod imzaları nasıl belirlenir? başlıklı makaleyi inceleyin.

Sorunları bildirmek ve başka destek almak için Drive API destek kılavuzuna bakın.

Örnek kod

Bu bölümdeki kod örnekleri, API'nin 3. sürümünü kullanır.

Dosya yükle

Aşağıdaki kod örneğinde, bir dosyanın kullanıcının Drive'ına nasıl kaydedileceği gösterilmektedir.

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

Klasörleri listeleyin

Aşağıdaki kod örneği, kullanıcının Drive'ındaki üst düzey klasörlerin nasıl listeleneceğini gösterir. Sonuçların tam listesine erişmek için sayfa jetonlarının kullanıldığını unutmayın.

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

Düzeltmeleri listeleme

Aşağıdaki kod örneğinde, belirli bir dosyanın düzeltmelerinin nasıl listeleneceği gösterilmektedir. Bazı dosyaların birden fazla düzeltmesi olabileceğini ve sonuçların tam listesine erişmek için sayfa jetonlarını kullanmanız gerektiğini unutmayın.

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

Dosya özellikleri ekleme

Aşağıdaki kod örneği, bir dosyaya özel özellik eklemek için appProperties alanını kullanır. Özel mülk yalnızca komut dosyası tarafından görülebilir. Dosyaya diğer uygulamalar tarafından da görülebilen bir özel özellik eklemek için bunun yerine properties alanını kullanın. Daha fazla bilgi için Özel dosya özellikleri ekleme başlıklı makaleyi inceleyin.

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