Exemples de code Apps Script

Les exemples de code Apps Script suivants sont disponibles pour YouTube Data API. Vous pouvez télécharger ces exemples de code à partir du dossier apps-script du dépôt de l'exemple de code des API YouTube sur GitHub.

Récupérer mes importations

Cette fonction récupère les vidéos mises en ligne par l'utilisateur de script actuel. Pour être exécutée, elle nécessite le niveau d'accès OAuth en lecture/écriture pour YouTube, ainsi que l'autorisation de l'utilisateur. Dans l'environnement d'exécution d'Apps Script, la première fois qu'un utilisateur exécute un script, Apps Script l'invite à accéder aux services appelés par le script. Une fois ces autorisations accordées, elles sont mises en cache pendant un certain temps. L'utilisateur exécutant le script sera à nouveau invité à accorder une autorisation une fois les autorisations requises modifiées ou lorsqu'elles seront invalidées par la fonction ScriptApp.invalidateAuth().

Ce script suit les étapes ci-dessous pour récupérer les vidéos mises en ligne par l'utilisateur actif: 1. Extrait les canaux de l'utilisateur. 2. Extrait la playlist des mises en ligne de l'utilisateur. 3. Elle parcourt l'ensemble des éléments de cette playlist et consigne les ID et les titres des vidéos. 4 Récupère un jeton de page suivante (le cas échéant). S'il y en a une, extrait la page suivante. GOTO Étape 3
/**
 * This function retrieves the current script user's uploaded videos. To execute,
 * it requires the OAuth read/write scope for YouTube as well as user authorization.
 * In Apps Script's runtime environment, the first time a user runs a script, Apps
 * Script will prompt the user for permission to access the services called by the
 * script. After permissions are granted, they are cached for some periodF of time.
 * The user running the script will be prompted for permission again once the
 * permissions required change, or when they are invalidated by the
 * ScriptApp.invalidateAuth() function.
 *
 * This script takes the following steps to retrieve the active user's uploaded videos:
 *    1. Fetches the user's channels
 *    2. Fetches the user's 'uploads' playlist
 *    3. Iterates through this playlist and logs the video IDs and titles
 *    4. Fetches a next page token (if any). If there is one, fetches the next page. GOTO Step 3
 */
function retrieveMyUploads() {
  var results = YouTube.Channels.list('contentDetails', {mine: true});
  for(var i in results.items) {
    var item = results.items[i];
    // Get the playlist ID, which is nested in contentDetails, as described in the
    // Channel resource: https://developers.google.com/youtube/v3/docs/channels
    var playlistId = item.contentDetails.relatedPlaylists.uploads;

    var nextPageToken = '';

    // This loop retrieves a set of playlist items and checks the nextPageToken in the
    // response to determine whether the list contains additional items. It repeats that process
    // until it has retrieved all of the items in the list.
    while (nextPageToken != null) {
      var playlistResponse = YouTube.PlaylistItems.list('snippet', {
        playlistId: playlistId,
        maxResults: 25,
        pageToken: nextPageToken
      });

      for (var j = 0; j < playlistResponse.items.length; j++) {
        var playlistItem = playlistResponse.items[j];
        Logger.log('[%s] Title: %s',
                   playlistItem.snippet.resourceId.videoId,
                   playlistItem.snippet.title);

      }
      nextPageToken = playlistResponse.nextPageToken;
    }
  }
}

Rechercher par mot clé

Cette fonction recherche les vidéos associées au mot clé "chiens". Les ID vidéo et les titres des résultats de recherche sont enregistrés dans le journal Apps Script.

Notez que cet exemple limite les résultats à 25. Pour renvoyer plus de résultats, transmettez des paramètres supplémentaires comme indiqué sur la page https://developers.google.com/youtube/v3/docs/search/list.
/**
 * This function searches for videos related to the keyword 'dogs'. The video IDs and titles
 * of the search results are logged to Apps Script's log.
 *
 * Note that this sample limits the results to 25. To return more results, pass
 * additional parameters as documented here:
 *   https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByKeyword() {
  var results = YouTube.Search.list('id,snippet', {q: 'dogs', maxResults: 25});
  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
  }
}

Rechercher par thème

Cette fonction recherche les vidéos associées à un sujet Freebase particulier, en enregistrant leurs ID et titres de vidéos dans le journal Apps Script. Cet exemple utilise l'ID du sujet pour Google Apps Script.

Notez que cet exemple limite les résultats à 25. Pour renvoyer plus de résultats, transmettez des paramètres supplémentaires comme indiqué sur la page https://developers.google.com/youtube/v3/docs/search/list.
/**
 * This function searches for videos that are associated with a particular Freebase
 * topic, logging their video IDs and titles to the Apps Script log. This example uses
 * the topic ID for Google Apps Script.
 *
 * Note that this sample limits the results to 25. To return more results, pass
 * additional parameters as documented here:
 *   https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByTopic() {
  var mid = '/m/0gjf126';
  var results = YouTube.Search.list('id,snippet', {topicId: mid, maxResults: 25});
  for(var i in results.items) {
    var item = results.items[i];
    Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
  }
}

S'abonner à la chaîne

Cet exemple permet d'abonner l'utilisateur actif à la chaîne YouTube Google Developers spécifiée par channelId.
/**
 * This sample subscribes the active user to the Google Developers
 * YouTube channel, specified by the channelId.
 */
function addSubscription() {
  // Replace this channel ID with the channel ID you want to subscribe to
  var channelId = 'UC_x5XG1OV2P6uZZ5FSM9Ttw';
  var resource = {
    snippet: {
      resourceId: {
        kind: 'youtube#channel',
        channelId: channelId
      }
    }
  };

  try {
    var response = YouTube.Subscriptions.insert(resource, 'snippet');
    Logger.log(response);
  } catch (e) {
    if(e.message.match('subscriptionDuplicate')) {
      Logger.log('Cannot subscribe; already subscribed to channel: ' + channelId);
    } else {
      Logger.log('Error adding subscription: ' + e.message);
    }
  }
}

Mettre à jour la vidéo

Cet exemple permet de rechercher les importations de l'utilisateur actif, puis de mettre à jour la description de l'importation la plus récente en ajoutant une chaîne.
/**
 * This sample finds the active user's uploads, then updates the most recent
 * upload's description by appending a string.
 */
function updateVideo() {
  // 1. Fetch all the channels owned by active user
  var myChannels = YouTube.Channels.list('contentDetails', {mine: true});
  // 2. Iterate through the channels and get the uploads playlist ID
  for (var i = 0; i < myChannels.items.length; i++) {
    var item = myChannels.items[i];
    var uploadsPlaylistId = item.contentDetails.relatedPlaylists.uploads;

    var playlistResponse = YouTube.PlaylistItems.list('snippet', {
      playlistId: uploadsPlaylistId,
      maxResults: 1
    });

    // Get the videoID of the first video in the list
    var video = playlistResponse.items[0];
    var originalDescription = video.snippet.description;
    var updatedDescription = originalDescription + ' Description updated via Google Apps Script';

    video.snippet.description = updatedDescription;

    var resource = {
      snippet: {
        title: video.snippet.title,
        description: updatedDescription,
        categoryId: '22'
      },
      id: video.snippet.resourceId.videoId
    };
    YouTube.Videos.update(resource, 'id,snippet');
  }
}