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 çok benzer şekilde bu API de komut dosyalarının Google Drive'da dosya ve klasör oluşturmasına, bulmasına ve değiştirmesine olanak tanır. Yerleşik hizmetin kullanımı çoğu durumda daha kolaydır. Ancak bu gelişmiş hizmet, dosya ve klasörlere yönelik düzeltmelerin yanı sıra özel dosya özelliklerine erişim gibi birkaç ek özellik sunar.

Referans

Bu hizmet hakkında ayrıntılı bilgi edinmek için Google Drive API referans belgelerine göz atı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 Yöntem imzaları nasıl belirlenir? bölümüne bakın.

Sorunları bildirmek ve diğer destek seçeneklerini öğrenmek için Drive API destek kılavuzuna göz atın.

Örnek kod

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

Dosyaları yükle

Aşağıdaki kod örneğinde, bir kullanıcının Drive'ına nasıl dosya 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 listeleme

Aşağıdaki kod örneğinde, kullanıcının Drive'ındaki üst düzey klasörlerin nasıl listeleneceği gösterilmektedir. 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 dosya için düzeltmelerin nasıl listeleneceği gösterilmektedir. Bazı dosyalarda birkaç düzeltme olabileceğini ve tam sonuç 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 özellik yalnızca komut dosyası tarafından görülebilir. Dosyaya, diğer uygulamaların da görebildiği özel bir özellik eklemek için bunun yerine properties alanını kullanın. Daha fazla bilgi için Özel dosya özellikleri ekleme konusuna bakın.

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