Service YouTube

Le service YouTube vous permet d'utiliser l'API YouTube Data et l'API YouTube Live Streaming dans Apps Script. Cette API permet aux utilisateurs de gérer leurs vidéos, leurs playlists, leurs chaînes et leurs événements en direct.

Reference

Pour plus d'informations sur ce service, consultez la documentation de référence suivante:

Comme tous les services avancés d'Apps Script, le service YouTube utilise les mêmes objets, méthodes et paramètres que l'API publique. Pour en savoir plus, consultez la section Comment les signatures de méthode sont-elles déterminées ?

Pour signaler des problèmes et obtenir de l'aide, consultez les pages d'assistance correspondantes:

Exemple de code

L'exemple de code ci-dessous utilise la version 3 de l'API YouTube Data.

Recherche par mot clé

Elle recherche des vidéos sur les chiens, puis consigne leur ID et leur titre. Notez que cet exemple limite les résultats à 25. Pour renvoyer plus de résultats, transmettez des paramètres supplémentaires comme indiqué dans la documentation de référence de l'API YouTube Data.

advanced/youtube.gs
/**
 * Searches for videos about dogs, then logs the video IDs and title.
 * Note that this sample limits the results to 25. To return more
 * results, pass additional parameters as shown in the YouTube Data API docs.
 * @see https://developers.google.com/youtube/v3/docs/search/list
 */
function searchByKeyword() {
  try {
    const results = YouTube.Search.list('id,snippet', {
      q: 'dogs',
      maxResults: 25
    });
    if (results === null) {
      console.log('Unable to search videos');
      return;
    }
    results.items.forEach((item)=> {
      console.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
    });
  } catch (err) {
    // TODO (developer) - Handle exceptions from Youtube API
    console.log('Failed with an error %s', err.message);
  }
}

Récupérer les importations

Cette fonction récupère les vidéos mises en ligne par l'utilisateur. Pour ce faire, il procède comme suit:

  1. Extrait la chaîne de l'utilisateur
  2. Extrait la playlist uploads de l'utilisateur
  3. Parcourt cette playlist et enregistre les ID et les titres des vidéos
  4. S'il existe une page de résultats suivante, l'extrait la page avant de revenir à l'étape 3.
advanced/youtube.gs
/**
 * This function retrieves the user's uploaded videos by:
 * 1. Fetching the user's channel's.
 * 2. Fetching the user's "uploads" playlist.
 * 3. Iterating through this playlist and logs the video IDs and titles.
 * 4. If there is a next page of resuts, fetching it and returns to step 3.
 */
function retrieveMyUploads() {
  try {
    // @see https://developers.google.com/youtube/v3/docs/channels/list
    const results = YouTube.Channels.list('contentDetails', {
      mine: true
    });
    if (!results || results.items.length === 0) {
      console.log('No Channels found.');
      return;
    }
    for (let i = 0; i < results.items.length; i++) {
      const item = results.items[i];
      /** Get the channel ID - it's nested in contentDetails, as described in the
       * Channel resource: https://developers.google.com/youtube/v3/docs/channels.
       */
      const playlistId = item.contentDetails.relatedPlaylists.uploads;
      let nextPageToken = null;
      do {
        // @see: https://developers.google.com/youtube/v3/docs/playlistItems/list
        const playlistResponse = YouTube.PlaylistItems.list('snippet', {
          playlistId: playlistId,
          maxResults: 25,
          pageToken: nextPageToken
        });
        if (!playlistResponse || playlistResponse.items.length === 0) {
          console.log('No Playlist found.');
          break;
        }
        for (let j = 0; j < playlistResponse.items.length; j++) {
          const playlistItem = playlistResponse.items[j];
          console.log('[%s] Title: %s',
              playlistItem.snippet.resourceId.videoId,
              playlistItem.snippet.title);
        }
        nextPageToken = playlistResponse.nextPageToken;
      } while (nextPageToken);
    }
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed with err %s', err.message);
  }
}

S'abonner à la chaîne

Dans cet exemple, l'utilisateur est abonné à la chaîne Google Developers sur YouTube.

advanced/youtube.gs
/**
 * This sample subscribes the user to the Google Developers channel on YouTube.
 * @see https://developers.google.com/youtube/v3/docs/subscriptions/insert
 */
function addSubscription() {
  // Replace this channel ID with the channel ID you want to subscribe to
  const channelId = 'UC_x5XG1OV2P6uZZ5FSM9Ttw';
  const resource = {
    snippet: {
      resourceId: {
        kind: 'youtube#channel',
        channelId: channelId
      }
    }
  };

  try {
    const response = YouTube.Subscriptions.insert(resource, 'snippet');
    console.log('Added subscription for channel title : %s', response.snippet.title);
  } catch (e) {
    if (e.message.match('subscriptionDuplicate')) {
      console.log('Cannot subscribe; already subscribed to channel: ' +
        channelId);
    } else {
      // TODO (developer) - Handle exception
      console.log('Error adding subscription: ' + e.message);
    }
  }
}