YouTube
Stay organized with collections
Save and categorize content based on your preferences.
Update video's details
function updateYouTubeVideo() {
// 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 ID 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');
console.log('Video with ID = %s and Title = %s was successfully updated.',
video.snippet.resourceId.videoId, video.snippet.title);
}
}
Create a channel bulletin
function postChannelBulletin() {
var message = 'Thanks for subscribing to my channel! This posting is ' +
'from Google Apps Script';
var videoId = 'INSERT_VIDEO_ID_HERE';
var resource = {
snippet: {
description: message
},
contentDetails: {
bulletin: {
resourceId: {
kind: 'youtube#video',
videoId: videoId
}
}
}
};
var response = YouTube.Activities.insert(resource, 'snippet,contentDetails');
console.log('Posted to channel bulletin successfully.');
}
Retrieve video uploads
function retrieveVideoUploads() {
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];
console.log('[%s] Title: %s',
playlistItem.snippet.resourceId.videoId,
playlistItem.snippet.title);
}
nextPageToken = playlistResponse.nextPageToken;
}
}
}
Search videos by keyword
function searchVideosByKeyword() {
var results = YouTube.Search.list('id,snippet', {q: 'dogs', maxResults: 25});
for (var i in results.items) {
var item = results.items[i];
console.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
}
}
Search videos by topics
function searchVideosByFreebaseTopic() {
// See https://developers.google.com/youtube/v3/guides/searching_by_topic
// for more details.
// Insert Your Freebase topic ID here. The Freebase ID used in this example
// corresponds to the Freebase entry for Google. See
// http://www.freebase.com/m/045c7b for more details.
var mid = '/m/045c7b';
var results = YouTube.Search.list('id,snippet',
{topicId: mid, maxResults: 25});
for (var i in results.items) {
var item = results.items[i];
console.log('[%s] Title: %s', item.id.videoId, item.snippet.title);
}
}
Subscribe to a channel
function subscribeToChannel() {
// Replace this channel ID with the channel ID you want to subscribe to.
var channelId = 'INSERT_YOUTUBE_CHANNEL_ID_HERE';
var resource = {
snippet: {
resourceId: {
kind: 'youtube#channel',
channelId: channelId
}
}
};
try {
var response = YouTube.Subscriptions.insert(resource, 'snippet');
console.log('Subscribed to channel ID %s successfully.', channelId);
} catch (e) {
if (e.message.match('subscriptionDuplicate')) {
console.log('Cannot subscribe; already subscribed to channel: ' +
channelId);
} else {
console.log('Error adding subscription: ' + e.message);
}
}
}
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2022-03-14 UTC.
[[["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 2022-03-14 UTC."],[[["This script provides functionalities for managing YouTube channels and videos, such as updating video details, posting channel bulletins, and retrieving video uploads."],["Users can leverage the provided functions to find videos based on keywords or Freebase topics."],["The script allows for subscribing to channels and managing channel subscriptions, handling potential duplicate subscriptions."],["It demonstrates the usage of Google Apps Script to interact with the YouTube API for automating channel and video management tasks."]]],[]]