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. Yerleşik hizmetin kullanımı çoğu durumda daha kolaydır. Ancak bu gelişmiş hizmet, özel dosya özelliklerine ve dosya ve klasörler için düzeltmeler gibi birkaç ekstra özellik sunar.

Referans

Bu hizmetle ilgili ayrıntılı bilgi için Google Drive API'nin referans belgelerini inceleyin. 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 kaynaklarına ulaşmak için Drive API destek kılavuzuna göz atın.

Örnek kod

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

Dosya yükleme

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 birden fazla düzeltme olabileceğini ve sonuçların tam listesine erişmek için sayfa jetonları 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ı 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);
  }
}