Las siguientes muestras de código de Apps Script están disponibles para YouTube Data API. Puedes descargar estas muestras de código de la carpeta apps-script
del repositorio de muestras de código de las APIs de YouTube en GitHub.
Recuperar mis videos subidos
Esta función recupera los videos subidos del usuario actual de la secuencia de comandos. Para ejecutarse, requiere el permiso de lectura y escritura de OAuth para YouTube, así como la autorización del usuario. En el entorno de ejecución de Apps Script, la primera vez que un usuario ejecuta una secuencia de comandos, Apps Script le solicita permiso para acceder a los servicios a los que llama la secuencia de comandos. Una vez que se otorgan los permisos, se almacenan en caché durante un período determinado. Se le volverá a solicitar permiso al usuario que ejecuta la secuencia de comandos una vez que cambien los permisos necesarios o cuando la funciónScriptApp.invalidateAuth()
los invalide.Esta secuencia de comandos realiza los siguientes pasos para recuperar los videos subidos del usuario activo:
- Recupera los canales del usuario.
- Recupera la playlist "Subidas" del usuario.
- Itera en esta playlist y registra los IDs y los títulos de los videos.
- Recupera un token de página siguiente, si corresponde. Si existe, obtiene la página siguiente. Repite el paso 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; } } }
Buscar por palabra clave
Esta función busca videos relacionados con la palabra clave'dogs'
. Los IDs de video y los títulos de los resultados de la búsqueda se registran en el registro de Apps Script.Ten en cuenta que esta muestra limita los resultados a 25. Para mostrar más resultados, pasa parámetros adicionales como se documenta en 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); } }
Buscar por tema
Esta función busca videos asociados con un tema de Freebase en particular y registra sus IDs y títulos de video en el registro de Apps Script. En este ejemplo, se usa el ID de tema de Google Apps Script.Ten en cuenta que esta muestra limita los resultados a 25. Para mostrar más resultados, pasa parámetros adicionales como se documenta en 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); } }
Suscribirse al canal
En este ejemplo, se suscribe al usuario activo al canal de YouTube de Google Developers, especificado por 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); } } }
Actualizar video
En este ejemplo, se encuentran las cargas del usuario activo y, luego, se agrega una cadena para actualizar la descripción de la carga más reciente./** * 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'); } }