API リクエストのパラメータに一致する、再生リストのアイテムのコレクションを返します。指定した再生リストのアイテムをすべて取得したり、一意の ID で再生リストのアイテムを 1 つまたは複数取得できます。
割り当てへの影響: このメソッドの呼び出しには、1 ユニットの割り当てコストが発生します。
一般的なユースケース
リクエスト
HTTP リクエスト
GET https://www.googleapis.com/youtube/v3/playlistItems
パラメータ
次の表に、このクエリでサポートされているパラメータを示します。このリストのパラメータはすべてクエリ パラメータです。
| パラメータ | ||
|---|---|---|
| 必須パラメータ | ||
| part | stringpartパラメータは、API レスポンスに含める 1 つ以上のplaylistItemリソース プロパティのカンマ区切りのリストを指定します。子プロパティを含むプロパティがパラメータで識別される場合、子プロパティはレスポンスに含まれます。たとえば、 playlistItemリソースのsnippetプロパティには、title、description、position、resourceIdプロパティなど、多数のフィールドが含まれています。そのため、part=snippetを設定すると、API レスポンスにはこれらのプロパティがすべて含まれます。次のリストは、パラメータ値に含めることができる part名を示します。
 | |
| フィルタ(次のパラメータのいずれか 1 つのみを指定) | ||
| id | stringidパラメータは、1 つ以上の一意の再生リスト アイテム ID のカンマ区切りのリストを指定します。 | |
| playlistId | stringplaylistIdパラメータは、再生リスト アイテムを取得する再生リストの一意の ID を指定します。これは省略可能なパラメータですが、再生リスト アイテムを取得するすべてのリクエストには、idパラメータまたはplaylistIdパラメータのいずれかの値を指定する必要があります。 | |
| オプション パラメータ | ||
| maxResults | unsigned integermaxResultsパラメータは、結果セットで返されるアイテムの最大数を指定します。有効な値は0~50です。デフォルト値は5です。 | |
| onBehalfOfContentOwner | stringこのパラメータは、適切に承認されたリクエストでのみ使用できます。注: このパラメータは YouTube コンテンツ パートナー専用です。 onBehalfOfContentOwnerパラメータは、リクエストの認証情報が、パラメータ値で指定されたコンテンツ所有者の代理である YouTube CMS ユーザーを識別することを示します。このパラメータは、複数の YouTube チャンネルを所有、管理している YouTube コンテンツ パートナーを対象にしています。このパラメータを使用すると、コンテンツ所有者は一度認証されれば、すべての動画やチャンネル データにアクセスできるようになります。チャンネルごとに認証情報を指定する必要はありません。ユーザー認証に使用する CMS アカウントは、指定された YouTube コンテンツ所有者にリンクされていなければなりません。 | |
| pageToken | stringpageTokenパラメータは、結果セットの特定のページを返します。API レスポンスでは、nextPageTokenプロパティとprevPageTokenプロパティは取得可能な他のページを示します。 | |
| videoId | stringvideoIdパラメータは、指定した動画を含む再生リスト アイテムのみを返すことを指定します。 | |
リクエスト本文
このメソッドを呼び出す場合は、リクエストの本文を指定しないでください。
レスポンス
成功すると、このメソッドは次の構造を含むレスポンスの本文を返します。
{
  "kind": "youtube#playlistItemListResponse",
  "etag": etag,
  "nextPageToken": string,
  "prevPageToken": string,
  "pageInfo": {
    "totalResults": integer,
    "resultsPerPage": integer
  },
  "items": [
    playlistItem Resource
  ]
}
プロパティ
次の表は、このリソースで使用されているプロパティの定義を示したものです。
| プロパティ | |
|---|---|
| kind | stringAPI リソースのタイプを識別します。値は youtube#playlistItemListResponseです。 | 
| etag | etagこのリソースの Etag。 | 
| nextPageToken | string結果セットで次のページを取得するために、 pageTokenパラメータの値として使用できるトークン。 | 
| prevPageToken | string結果セット内の前のページを取得するために、 pageTokenパラメータの値として使用できるトークン。 | 
| pageInfo | objectpageInfoオブジェクトは、結果セットのページング情報をカプセル化します。 | 
| pageInfo.totalResults | integer結果セット内の結果の合計数。 | 
| pageInfo.resultsPerPage | integerAPI レスポンスに含まれる結果の数。 | 
| items[] | listリクエスト条件に一致する再生リスト アイテムのリスト。 | 
例
注: 次のコードサンプルは、サポートされているプログラミング言語の一部を示しているわけではありません。サポートされている言語の一覧については、クライアント ライブラリのドキュメントをご覧ください。
Go
このコードサンプルでは、API のplaylistItems.list メソッドを呼び出して、リクエストに関連付けられているチャンネルにアップロードされた動画のリストを取得します。また、このコードは、mine パラメータを true に設定して channels.list メソッドを呼び出し、チャンネルにアップロードされた動画を識別する再生リスト ID を取得します。この例では、Go クライアント ライブラリを使用します。
package main
import (
	"fmt"
	"log"
	"google.golang.org/api/youtube/v3"
)
// Retrieve playlistItems in the specified playlist
func playlistItemsList(service *youtube.Service, part string, playlistId string, pageToken string) *youtube.PlaylistItemListResponse {
	call := service.PlaylistItems.List(part)
	call = call.PlaylistId(playlistId)
	if pageToken != "" {
		call = call.PageToken(pageToken)
	}
	response, err := call.Do()
	handleError(err, "")
	return response
}
// Retrieve resource for the authenticated user's channel
func channelsListMine(service *youtube.Service, part string) *youtube.ChannelListResponse {
	call := service.Channels.List(part)
	call = call.Mine(true)
	response, err := call.Do()
	handleError(err, "")
	return response
}
func main() {
	client := getClient(youtube.YoutubeReadonlyScope)
	service, err := youtube.New(client)
	
	if err != nil {
		log.Fatalf("Error creating YouTube client: %v", err)
	}
	response := channelsListMine(service, "contentDetails")
	for _, channel := range response.Items {
		playlistId := channel.ContentDetails.RelatedPlaylists.Uploads
		
		// Print the playlist ID for the list of uploaded videos.
		fmt.Printf("Videos in list %s\r\n", playlistId)
		nextPageToken := ""
		for {
			// Retrieve next set of items in the playlist.
			playlistResponse := playlistItemsList(service, "snippet", playlistId, nextPageToken)
			
			for _, playlistItem := range playlistResponse.Items {
				title := playlistItem.Snippet.Title
				videoId := playlistItem.Snippet.ResourceId.VideoId
				fmt.Printf("%v, (%v)\r\n", title, videoId)
			}
			// Set the token to retrieve the next page of results
			// or exit the loop if all results have been retrieved.
			nextPageToken = playlistResponse.NextPageToken
			if nextPageToken == "" {
				break
			}
			fmt.Println()
		}
	}
}
.NET
次のコードサンプルでは、API のplaylistItems.list メソッドを呼び出して、リクエストに関連付けられているチャンネルにアップロードされた動画のリストを取得します。また、このコードは、mine パラメータを true に設定して channels.list メソッドを呼び出し、チャンネルにアップロードされた動画を識別する再生リスト ID を取得します。This example uses the .NET client library.
using System;
using System.IO;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Upload;
using Google.Apis.Util.Store;
using Google.Apis.YouTube.v3;
using Google.Apis.YouTube.v3.Data;
namespace Google.Apis.YouTube.Samples
{
  /// <summary>
  /// YouTube Data API v3 sample: retrieve my uploads.
  /// Relies on the Google APIs Client Library for .NET, v1.7.0 or higher.
  /// See https://developers.google.com/api-client-library/dotnet/get_started
  /// </summary>
  internal class MyUploads
  {
    [STAThread]
    static void Main(string[] args)
    {
      Console.WriteLine("YouTube Data API: My Uploads");
      Console.WriteLine("============================");
      try
      {
        new MyUploads().Run().Wait();
      }
      catch (AggregateException ex)
      {
        foreach (var e in ex.InnerExceptions)
        {
          Console.WriteLine("Error: " + e.Message);
        }
      }
      Console.WriteLine("Press any key to continue...");
      Console.ReadKey();
    }
    private async Task Run()
    {
      UserCredential credential;
      using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
      {
        credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
            GoogleClientSecrets.Load(stream).Secrets,
            // This OAuth 2.0 access scope allows for read-only access to the authenticated 
            // user's account, but not other types of account access.
            new[] { YouTubeService.Scope.YoutubeReadonly },
            "user",
            CancellationToken.None,
            new FileDataStore(this.GetType().ToString())
        );
      }
      var youtubeService = new YouTubeService(new BaseClientService.Initializer()
      {
        HttpClientInitializer = credential,
        ApplicationName = this.GetType().ToString()
      });
      var channelsListRequest = youtubeService.Channels.List("contentDetails");
      channelsListRequest.Mine = true;
      // Retrieve the contentDetails part of the channel resource for the authenticated user's channel.
      var channelsListResponse = await channelsListRequest.ExecuteAsync();
      foreach (var channel in channelsListResponse.Items)
      {
        // From the API response, extract the playlist ID that identifies the list
        // of videos uploaded to the authenticated user's channel.
        var uploadsListId = channel.ContentDetails.RelatedPlaylists.Uploads;
        Console.WriteLine("Videos in list {0}", uploadsListId);
        var nextPageToken = "";
        while (nextPageToken != null)
        {
          var playlistItemsListRequest = youtubeService.PlaylistItems.List("snippet");
          playlistItemsListRequest.PlaylistId = uploadsListId;
          playlistItemsListRequest.MaxResults = 50;
          playlistItemsListRequest.PageToken = nextPageToken;
          // Retrieve the list of videos uploaded to the authenticated user's channel.
          var playlistItemsListResponse = await playlistItemsListRequest.ExecuteAsync();
          foreach (var playlistItem in playlistItemsListResponse.Items)
          {
            // Print information about each video.
            Console.WriteLine("{0} ({1})", playlistItem.Snippet.Title, playlistItem.Snippet.ResourceId.VideoId);
          }
          nextPageToken = playlistItemsListResponse.NextPageToken;
        }
      }
    }
  }
}
Ruby
このサンプルは、API のplaylistItems.list メソッドを呼び出して、リクエストに関連付けられているチャンネルにアップロードされた動画のリストを取得します。また、このコードでは、mine パラメータを true に設定して channels.list メソッドを呼び出し、チャンネルにアップロードされた動画を識別する再生リスト ID を取得します。この例では、Ruby クライアント ライブラリを使用しています。
#!/usr/bin/ruby
require 'rubygems'
gem 'google-api-client', '>0.7'
require 'google/api_client'
require 'google/api_client/client_secrets'
require 'google/api_client/auth/file_storage'
require 'google/api_client/auth/installed_app'
# This OAuth 2.0 access scope allows for read-only access to the authenticated
# user's account, but not other types of account access.
YOUTUBE_READONLY_SCOPE = 'https://www.googleapis.com/auth/youtube.readonly'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'
def get_authenticated_service
  client = Google::APIClient.new(
    :application_name => $PROGRAM_NAME,
    :application_version => '1.0.0'
  )
  youtube = client.discovered_api(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION)
  file_storage = Google::APIClient::FileStorage.new("#{$PROGRAM_NAME}-oauth2.json")
  if file_storage.authorization.nil?
    client_secrets = Google::APIClient::ClientSecrets.load
    flow = Google::APIClient::InstalledAppFlow.new(
      :client_id => client_secrets.client_id,
      :client_secret => client_secrets.client_secret,
      :scope => [YOUTUBE_READONLY_SCOPE]
    )
    client.authorization = flow.authorize(file_storage)
  else
    client.authorization = file_storage.authorization
  end
  return client, youtube
end
def main
  client, youtube = get_authenticated_service
  begin
    # Retrieve the "contentDetails" part of the channel resource for the
    # authenticated user's channel.
    channels_response = client.execute!(
      :api_method => youtube.channels.list,
      :parameters => {
        :mine => true,
        :part => 'contentDetails'
      }
    )
    channels_response.data.items.each do |channel|
      # From the API response, extract the playlist ID that identifies the list
      # of videos uploaded to the authenticated user's channel.
      uploads_list_id = channel['contentDetails']['relatedPlaylists']['uploads']
      # Retrieve the list of videos uploaded to the authenticated user's channel.
      next_page_token = ''
      until next_page_token.nil?
        playlistitems_response = client.execute!(
          :api_method => youtube.playlist_items.list,
          :parameters => {
            :playlistId => uploads_list_id,
            :part => 'snippet',
            :maxResults => 50,
            :pageToken => next_page_token
          }
        )
        puts "Videos in list #{uploads_list_id}"
        # Print information about each video.
        playlistitems_response.data.items.each do |playlist_item|
          title = playlist_item['snippet']['title']
          video_id = playlist_item['snippet']['resourceId']['videoId']
          puts "#{title} (#{video_id})"
        end
        next_page_token = playlistitems_response.next_page_token
      end
      puts
    end
  rescue Google::APIClient::TransmissionError => e
    puts e.result.body
  end
end
main
エラー
次の表に、このメソッドの呼び出しに対して API から返されるエラー メッセージを示します。詳細については、エラー メッセージのドキュメントを参照してください。
| エラーのタイプ | エラーの詳細 | 説明 | 
|---|---|---|
| forbidden (403) | playlistItemsNotAccessible | リクエストは適切に認証されていないため、指定された再生リストを取得できません。 | 
| forbidden (403) | watchHistoryNotAccessible | API を使用して再生履歴データを取得することはできません。 | 
| forbidden (403) | watchLaterNotAccessible | [後で見る] 再生リストのアイテムは、API を使用して取得できません。 | 
| notFound (404) | playlistNotFound | リクエストの playlistIdパラメータで特定される再生リストが見つかりません。 | 
| notFound (404) | videoNotFound | リクエストの videoIdパラメータで識別される動画が見つかりません。 | 
| required (400) | playlistIdRequired | サブスクライブ リクエストで必須の playlistIdプロパティの値が指定されていません。 | 
| invalidValue (400) | playlistOperationUnsupported | この API では、指定した再生リスト内の動画を一覧表示する機能はサポートされていません。たとえば、[後で見る] 再生リストに動画を表示することはできません。 | 
試してみよう:
APIs Explorer を使用してこの API を呼び出し、API のリクエストとレスポンスを確認します。