こちらのサイトを参考に書き換えてみたのですが、以下のコードではプレイリストを作成したチャンネルのchannelIdが取得されます。
動画を投稿したチャンネルのchannelIdを取得するには、どうしたら良いのでしょうか。
よろしくお願いいたします。
実現したいこと
- playlistIdを基にPlaylistItemsからvideoIdを取得
- videoIdを基にvideosからtitleやchannelId等を取得
- 重複していないデータをシートの最後行に書き込む
発生している問題
PlaylistItemsから取得出来るchannelIdは、プレイリストを作成したチャンネルのもの。
動画を投稿したチャンネルのchannelIdが欲しい。
該当のソースコード
GAS
1function getPlaylistItems(){ 2 const playlistId = "{取得したいプレイリストID}"; 3 const maxResults = 100; 4 const dstSsName = "{書き込みたいスプレッドシート名}"; 5 6 // プレイリストのデータを取得する 7 let playlistData = []; 8 let nextPageToken = ""; 9 let remainingResults = maxResults; 10 11 while (nextPageToken != null && remainingResults > 0){ 12 const playlistResponse = YouTube.PlaylistItems.list("snippet", { 13 playlistId: playlistId, 14 maxResults: remainingResults, 15 pageToken: nextPageToken 16 }); 17 18 const itemsNum = playlistResponse.items.length; 19 for (let i = 0; i < itemsNum; i++){ 20 const item = playlistResponse.items[i]; 21 const video_publish = item.snippet.publishedAt.replace(/T\d\d:\d\d:\d\dZ/g,""); 22 const channel_id = item.snippet.channelId; 23 const video_id = item.snippet.resourceId.videoId; 24 const video_title = item.snippet.title; 25 const video_description = item.snippet.description.replace(/\r?\n/g,""); 26 const channel_title = item.snippet.channelTitle; 27 28 playlistData.push([video_publish, video_id, video_title, video_description, channel_id, channel_title]); 29 } 30 31 nextPageToken = playlistResponse.nextPageToken; 32 remainingResults -= itemsNum; 33 } 34 35 // 取得したデータをシートに書き込む 36 const dstSs = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(dstSsName); 37 const dstSsLstRow = dstSs.getLastRow()+1; 38 dstSs.getRange(dstSsLstRow, 2, playlistData.length, playlistData[0].length).setValues(playlistData); 39}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
YouTube API
Google Apps Script
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/20 08:03