Servizio YouTube

Il servizio YouTube ti consente di utilizzare l'API YouTube Data e l'API YouTube Live Streaming in Apps Script. Questa API offre agli utenti la possibilità di gestire video, playlist, canali ed eventi dal vivo.

Riferimento

Per informazioni dettagliate su questo servizio, consulta la seguente documentazione di riferimento:

Come tutti i servizi avanzati in Apps Script, il servizio YouTube utilizza gli stessi oggetti, metodi e parametri dell'API pubblica. Per saperne di più, vedi Come vengono determinate le firme dei metodi.

Per segnalare problemi e trovare ulteriore assistenza, consulta le pagine di assistenza corrispondenti:

Codice di esempio

Il codice di esempio riportato di seguito utilizza la versione 3 dell'API YouTube Data.

Cerca per parola chiave

Questa funzione cerca video sui cani, quindi registra ID video e titolo. Tieni presente che questo campione limita i risultati a 25. Per restituire ulteriori risultati, trasmetti parametri aggiuntivi come mostrato nella documentazione di riferimento dell'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) {
      Logger.log('Unable to search videos');
      return;
    }
    results.items.forEach((item)=> {
      Logger.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
    });
  } catch (err) {
    // TODO (developer) - Handle exceptions from Youtube API
    Logger.log('Failed with an error %s', err.message);
  }
}

Recuperare i caricamenti

Questa funzione recupera i video caricati dall'utente. A tal fine, segui questi passaggi:

  1. Visualizza il canale dell'utente
  2. Recupera la playlist uploads dell'utente
  3. Itera tramite questa playlist e registra gli ID e i titoli dei video
  4. Se è presente una pagina di risultati successiva, la recupera, quindi torna al passaggio 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) {
      Logger.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) {
          Logger.log('No Playlist found.');
          break;
        }
        for (let j = 0; j < playlistResponse.items.length; j++) {
          const playlistItem = playlistResponse.items[j];
          Logger.log('[%s] Title: %s',
              playlistItem.snippet.resourceId.videoId,
              playlistItem.snippet.title);
        }
        nextPageToken = playlistResponse.nextPageToken;
      } while (nextPageToken);
    }
  } catch (err) {
    // TODO (developer) - Handle exception
    Logger.log('Failed with err %s', err.message);
  }
}

Iscriviti al canale

Questo esempio esegue l'iscrizione dell'utente al canale Google Developers su 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');
    Logger.log('Added subscription for channel title : %s', response.snippet.title);
  } catch (e) {
    if (e.message.match('subscriptionDuplicate')) {
      Logger.log('Cannot subscribe; already subscribed to channel: ' +
        channelId);
    } else {
      // TODO (developer) - Handle exception
      Logger.log('Error adding subscription: ' + e.message);
    }
  }
}