YouTube サービス
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
YouTube サービスでは、Apps Script で YouTube Data API と YouTube Live Streaming API を使用できます。この API を使用すると、動画、再生リスト、チャンネル、ライブイベントを管理できます。
リファレンス
このサービスの詳細については、次のリファレンス ドキュメントをご覧ください。
Apps Script のすべての高度なサービスと同様に、YouTube サービスでは、公開 API と同じオブジェクト、メソッド、パラメータを使用します。詳細については、メソッド シグネチャの決定方法をご覧ください。
問題を報告したり、その他のサポートを利用したりするには、対応するサポートページをご覧ください。
サンプルコード
以下のサンプルコードでは、YouTube Data API のバージョン 3 を使用しています。
キーワードで検索
この関数は、犬に関する動画を検索し、動画 ID とタイトルをログに記録します。このサンプルでは、結果を 25 件に制限しています。より多くの結果を返すには、YouTube Data API リファレンス ドキュメントに示されているように、追加のパラメータを渡します。
アップロードを取得する
この関数は、ユーザーのアップロード動画を取得します。この処理は次の手順で実行されます。
- ユーザーのチャンネルを取得します
- ユーザーの
uploads
再生リストを取得します
- この再生リストを反復処理し、動画 ID とタイトルをログに記録します。
- 結果の次のページがある場合は、それを取得してからステップ 3 に戻ります。
チャンネル登録
このサンプルでは、ユーザーを YouTube の Google Developers チャンネルに登録します。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-31 UTC。
[null,null,["最終更新日 2025-08-31 UTC。"],[[["\u003cp\u003eThe 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.\u003c/p\u003e\n"],["\u003cp\u003eThis is an advanced service that needs to be enabled before use within your Apps Script project.\u003c/p\u003e\n"],["\u003cp\u003eSample code is provided to demonstrate searching for videos, retrieving user uploads, and subscribing to channels using the API.\u003c/p\u003e\n"],["\u003cp\u003eRefer to the YouTube Data API and YouTube Live Streaming API reference documentation for detailed information and further functionalities.\u003c/p\u003e\n"]]],[],null,["# YouTube Service\n\nThe YouTube service allows you to use the [YouTube Data API](/youtube/v3)\nand [YouTube Live Streaming API](/youtube/v3/live) in Apps Script. This API\ngives users the ability to manage their videos, playlists, channels, and live\nevents.\n| **Note:** This is an advanced service that must be [enabled before use](/apps-script/guides/services/advanced).\n\nReference\n---------\n\nFor detailed information on this service, see the following reference\ndocumentation:\n\n- [YouTube Data API](/youtube/v3/docs)\n- [YouTube Live Streaming API](/youtube/v3/live/docs)\n\nLike all advanced services in Apps Script, the YouTube service uses the same\nobjects, methods, and parameters as the public API. For more information, see [How method signatures are determined](/apps-script/guides/services/advanced#how_method_signatures_are_determined).\n\nTo report issues and find other support, see the corresponding support pages:\n\n- [YouTube Data API support](/youtube/v3/support)\n- [YouTube Live Streaming API support](/youtube/v3/live/support)\n\nSample code\n-----------\n\nThe sample code below uses [version 3](/youtube/v3/docs) of the YouTube Data\nAPI.\n\n### Search by keyword\n\nThis function searches for videos about dogs, then logs the video IDs and title.\nNote that this sample limits the results to 25. To return more results, pass\nadditional parameters as shown in the\n[YouTube Data API reference documentation](/youtube/v3/docs/search/list). \nadvanced/youtube.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/advanced/youtube.gs) \n\n```javascript\n/**\n * Searches for videos about dogs, then logs the video IDs and title.\n * Note that this sample limits the results to 25. To return more\n * results, pass additional parameters as shown in the YouTube Data API docs.\n * @see https://developers.google.com/youtube/v3/docs/search/list\n */\nfunction searchByKeyword() {\n try {\n const results = YouTube.Search.list('id,snippet', {\n q: 'dogs',\n maxResults: 25\n });\n if (results === null) {\n console.log('Unable to search videos');\n return;\n }\n results.items.forEach((item)=\u003e {\n console.log('[%s] Title: %s', item.id.videoId, item.snippet.title);\n });\n } catch (err) {\n // TODO (developer) - Handle exceptions from Youtube API\n console.log('Failed with an error %s', err.message);\n }\n}\n```\n\n### Retrieve uploads\n\nThis function retrieves the user's uploaded videos. It does this using the\nfollowing steps:\n\n1. Fetches the user's channel\n2. Fetches the user's `uploads` playlist\n3. Iterates through this playlist and logs the video IDs and titles\n4. If there is a next page of results, fetches it, then returns to step 3\n\nadvanced/youtube.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/advanced/youtube.gs) \n\n```javascript\n/**\n * This function retrieves the user's uploaded videos by:\n * 1. Fetching the user's channel's.\n * 2. Fetching the user's \"uploads\" playlist.\n * 3. Iterating through this playlist and logs the video IDs and titles.\n * 4. If there is a next page of resuts, fetching it and returns to step 3.\n */\nfunction retrieveMyUploads() {\n try {\n // @see https://developers.google.com/youtube/v3/docs/channels/list\n const results = YouTube.Channels.list('contentDetails', {\n mine: true\n });\n if (!results || results.items.length === 0) {\n console.log('No Channels found.');\n return;\n }\n for (let i = 0; i \u003c results.items.length; i++) {\n const item = results.items[i];\n /** Get the channel ID - it's nested in contentDetails, as described in the\n * Channel resource: https://developers.google.com/youtube/v3/docs/channels.\n */\n const playlistId = item.contentDetails.relatedPlaylists.uploads;\n let nextPageToken = null;\n do {\n // @see: https://developers.google.com/youtube/v3/docs/playlistItems/list\n const playlistResponse = YouTube.PlaylistItems.list('snippet', {\n playlistId: playlistId,\n maxResults: 25,\n pageToken: nextPageToken\n });\n if (!playlistResponse || playlistResponse.items.length === 0) {\n console.log('No Playlist found.');\n break;\n }\n for (let j = 0; j \u003c playlistResponse.items.length; j++) {\n const playlistItem = playlistResponse.items[j];\n console.log('[%s] Title: %s',\n playlistItem.snippet.resourceId.videoId,\n playlistItem.snippet.title);\n }\n nextPageToken = playlistResponse.nextPageToken;\n } while (nextPageToken);\n }\n } catch (err) {\n // TODO (developer) - Handle exception\n console.log('Failed with err %s', err.message);\n }\n}\n```\n\n### Subscribe to channel\n\nThis sample subscribes the user to the Google Developers channel on YouTube. \nadvanced/youtube.gs \n[View on GitHub](https://github.com/googleworkspace/apps-script-samples/blob/main/advanced/youtube.gs) \n\n```javascript\n/**\n * This sample subscribes the user to the Google Developers channel on YouTube.\n * @see https://developers.google.com/youtube/v3/docs/subscriptions/insert\n */\nfunction addSubscription() {\n // Replace this channel ID with the channel ID you want to subscribe to\n const channelId = 'UC_x5XG1OV2P6uZZ5FSM9Ttw';\n const resource = {\n snippet: {\n resourceId: {\n kind: 'youtube#channel',\n channelId: channelId\n }\n }\n };\n\n try {\n const response = YouTube.Subscriptions.insert(resource, 'snippet');\n console.log('Added subscription for channel title : %s', response.snippet.title);\n } catch (e) {\n if (e.message.match('subscriptionDuplicate')) {\n console.log('Cannot subscribe; already subscribed to channel: ' +\n channelId);\n } else {\n // TODO (developer) - Handle exception\n console.log('Error adding subscription: ' + e.message);\n }\n }\n}\n```"]]