ตัวอย่างโค้ด Apps Script ต่อไปนี้พร้อมใช้งานสำหรับ YouTube Data API คุณดาวน์โหลดตัวอย่างโค้ดเหล่านี้ได้จากโฟลเดอร์ apps-script
ของที่เก็บตัวอย่างโค้ดของ YouTube API ใน GitHub
ดึงข้อมูลการอัปโหลดของฉัน
ฟังก์ชันนี้จะดึงวิดีโอที่ผู้ใช้สคริปต์อัปโหลดไว้ในปัจจุบัน จำเป็นต้องใช้ขอบเขตการอ่าน/เขียน OAuth สำหรับ YouTube และการให้สิทธิ์จากผู้ใช้เพื่อดำเนินการ ในสภาพแวดล้อมรันไทม์ของ Apps Script ครั้งแรกที่ผู้ใช้เรียกใช้สคริปต์ Apps Script จะแสดงข้อความแจ้งให้ผู้ใช้ขอสิทธิ์เข้าถึงบริการที่สคริปต์เรียกใช้ หลังจากได้รับสิทธิ์แล้ว ระบบจะแคชไว้อีกระยะหนึ่ง ผู้ใช้ที่เรียกใช้สคริปต์จะได้รับข้อความขออนุญาตอีกครั้งเมื่อมีการเปลี่ยนแปลงสิทธิ์ที่จำเป็น หรือเมื่อฟังก์ชัน ScriptApp.invalidateAuth() ใช้งานไม่ได้สคริปต์นี้จะดำเนินการตามขั้นตอนต่อไปนี้เพื่อเรียกวิดีโอที่อัปโหลดของผู้ใช้ที่ใช้งานอยู่ 1. ดึงข้อมูลช่องของผู้ใช้ 2. ดึงข้อมูล "การอัปโหลด" ของผู้ใช้ เพลย์ลิสต์ 3 ทำซ้ำผ่านเพลย์ลิสต์นี้และบันทึกรหัสวิดีโอและชื่อ 4. ดึงข้อมูลโทเค็นหน้าถัดไป (หากมี) หากมี ให้ดึงข้อมูลหน้าถัดไป ไปที่ขั้นตอนที่ 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; } } }
ค้นหาตามคีย์เวิร์ด
ฟังก์ชันนี้จะค้นหาวิดีโอที่เกี่ยวข้องกับคีย์เวิร์ด "สุนัข" ระบบจะบันทึกรหัสวิดีโอและชื่อของผลการค้นหาไว้ในบันทึกของ Apps Scriptโปรดทราบว่าตัวอย่างนี้จำกัดผลลัพธ์ไว้ที่ 25 รายการ หากต้องการแสดงผลลัพธ์เพิ่มเติม ให้ส่งพารามิเตอร์เพิ่มเติมตามที่ระบุไว้ที่นี่ https://developers.google.com/youtube/v3/docs/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); } }
ค้นหาตามหัวข้อ
ฟังก์ชันนี้จะค้นหาวิดีโอที่เชื่อมโยงกับหัวข้อ Freebase ที่เจาะจง และจะบันทึกรหัสวิดีโอและชื่อลงในบันทึก Apps Script ตัวอย่างนี้ใช้รหัสหัวข้อสำหรับ Google Apps Scriptโปรดทราบว่าตัวอย่างนี้จำกัดผลลัพธ์ไว้ที่ 25 รายการ หากต้องการแสดงผลลัพธ์เพิ่มเติม ให้ส่งพารามิเตอร์เพิ่มเติมตามที่ระบุไว้ที่นี่ https://developers.google.com/youtube/v3/docs/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); } }
ติดตามช่อง
ตัวอย่างนี้ติดตามผู้ใช้ที่ใช้งานอยู่ไปยังช่อง YouTube ของ GoogleDevelopers ซึ่งระบุโดย 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); } } }
อัปเดตวิดีโอ
ตัวอย่างนี้จะค้นหาการอัปโหลดของผู้ใช้ที่ใช้งานอยู่ จากนั้นจึงอัปเดตคำอธิบายการอัปโหลดล่าสุดโดยต่อท้ายสตริง/** * 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'); } }