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, dosyalar ve klasörlerdeki düzeltmelerin yanı sıra özel dosya özelliklerine erişim gibi birkaç ek özellik sunar.

Referans

Bu hizmetle ilgili 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 genel API ile aynı nesneleri, yöntemleri ve parametreleri kullanır. Daha fazla bilgi için Yöntem imzaları nasıl belirlenir? başlıklı makaleyi inceleyin.

Sorunları bildirmek ve diğer destek kaynaklarını bulmak için Drive API destek kılavuzuna bakın.

Örnek kod

Bu bölümdeki kod örneklerinde API'nin 3. sürümü kullanılmaktadı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ğ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 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ğinde, bir dosyaya özel özellik eklemek için appProperties alanı kullanılmaktadır. Özel özellik yalnızca komut dosyasına görünür. Dosyaya diğer uygulamaların da görebileceği özel bir özellik eklemek için 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);
  }
}