Stay organized with collections
Save and categorize content based on your preferences.
The YouTube service allows you to use the YouTube Data API
and YouTube Live Streaming API in Apps Script. This API
gives users the ability to manage their videos, playlists, channels, and live
events.
Reference
For detailed information on this service, see the following reference
documentation:
Like all advanced services in Apps Script, the YouTube service uses the same
objects, methods, and parameters as the public API. For more information, see How method signatures are determined.
To report issues and find other support, see the corresponding support pages:
The sample code below uses version 3 of the YouTube Data
API.
Search by keyword
This function 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 reference documentation.
/** * 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 */functionsearchByKeyword(){try{constresults=YouTube.Search.list('id,snippet',{q:'dogs',maxResults:25});if(results===null){console.log('Unabletosearchvideos');return;}results.items.forEach((item)=>{console.log('[%s]Title:%s',item.id.videoId,item.snippet.title);});}catch(err){// TODO (developer) - Handle exceptions from Youtube APIconsole.log('Failedwithanerror%s',err.message);}}
Retrieve uploads
This function retrieves the user's uploaded videos. It does this using the
following steps:
Fetches the user's channel
Fetches the user's uploads playlist
Iterates through this playlist and logs the video IDs and titles
If there is a next page of results, fetches it, then returns to step 3
/** * 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. */functionretrieveMyUploads(){try{// @see https://developers.google.com/youtube/v3/docs/channels/listconstresults=YouTube.Channels.list('contentDetails',{mine:true});if(!results||results.items.length===0){console.log('NoChannelsfound.');return;}for(leti=0;i < results.items.length;i++){constitem=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. */constplaylistId=item.contentDetails.relatedPlaylists.uploads;letnextPageToken=null;do{// @see: https://developers.google.com/youtube/v3/docs/playlistItems/listconstplaylistResponse=YouTube.PlaylistItems.list('snippet',{playlistId:playlistId,maxResults:25,pageToken:nextPageToken});if(!playlistResponse||playlistResponse.items.length===0){console.log('NoPlaylistfound.');break;}for(letj=0;j < playlistResponse.items.length;j++){constplaylistItem=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 exceptionconsole.log('Failedwitherr%s',err.message);}}
Subscribe to channel
This sample subscribes the user to the Google Developers channel on YouTube.
/** * This sample subscribes the user to the Google Developers channel on YouTube. * @see https://developers.google.com/youtube/v3/docs/subscriptions/insert */functionaddSubscription(){// Replace this channel ID with the channel ID you want to subscribe toconstchannelId='UC_x5XG1OV2P6uZZ5FSM9Ttw';constresource={snippet:{resourceId:{kind:'youtube#channel',channelId:channelId}}};try{constresponse=YouTube.Subscriptions.insert(resource,'snippet');console.log('Addedsubscriptionforchanneltitle:%s',response.snippet.title);}catch(e){if(e.message.match('subscriptionDuplicate')){console.log('Cannotsubscribe;alreadysubscribedtochannel:'+channelId);}else{// TODO (developer) - Handle exceptionconsole.log('Erroraddingsubscription:'+e.message);}}}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-12-19 UTC."],[[["The YouTube service in Apps Script allows you to manage videos, playlists, channels, and live events using the YouTube Data API and YouTube Live Streaming API."],["This is an advanced service that needs to be enabled before use within your Apps Script project."],["Sample code is provided to demonstrate searching for videos, retrieving user uploads, and subscribing to channels using the API."],["Refer to the YouTube Data API and YouTube Live Streaming API reference documentation for detailed information and further functionalities."]]],[]]