質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Q&A

解決済

1回答

967閲覧

Youtube Data APIを使った動画取得で抜けが生じる

MagicalWatosan

総合スコア10

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

0グッド

0クリップ

投稿2022/02/06 09:47

あるチャンネルのアップロード動画一覧をGoogle Apps Scriptで取得しようとしたところ,抜けがあることに気づきました.

問題点

例のようなコードで確かめてみたところ以下の結果となり,
1年分の本数(261)≠ 半年分ずつの合計(134+133=267)となってしまいました.
同じものを重複して数えているのではなく,1年分の方に抜け落ちた動画があるようです.
//-------------------------------------------------------------------------------------------------//
2020-01-01T00:00:00Z -> 2020-12-31T23:59:59Z:261
2020-01-01T00:00:00Z -> 2020-06-30T23:59:59Z:134
2020-07-01T00:00:00Z -> 2020-12-31T23:59:59Z:133
//-------------------------------------------------------------------------------------------------//

解決したいこと

原因または解決策が知りたいです.
よろしくお願いいたします.

GoogleAppsScript

1/**********************************************************************/ 2async function myFunction() 3{ 4 let ops = { 5 channelId: "@@@@@@", 6 maxResults: 50, 7 regionCode: "JP", 8 type: "video" 9 }; 10 11 ops.pageToken = undefined; 12 ops.publishedAfter = "2020-01-01T00:00:00Z"; 13 ops.publishedBefore = "2020-12-31T23:59:59Z"; 14 await countVideos(ops); 15 16 ops.pageToken = undefined; 17 ops.publishedAfter = "2020-01-01T00:00:00Z"; 18 ops.publishedBefore = "2020-06-30T23:59:59Z"; 19 await countVideos(ops); 20 21 ops.pageToken = undefined; 22 ops.publishedAfter = "2020-07-01T00:00:00Z"; 23 ops.publishedBefore = "2020-12-31T23:59:59Z"; 24 await countVideos(ops); 25/**********************************************************************/ 26} 27/**********************************************************************/ 28async function countVideos(ops) 29{ 30 let sum = 0; 31 32 do 33 { 34 let res = await YouTube.Search.list("id", ops); 35 36 sum += res.items.length; 37 38 ops.pageToken = res.nextPageToken; 39 } 40 while(ops.pageToken != undefined); 41 42 Logger.log(ops.publishedAfter + " -> " + ops.publishedBefore + ":" + sum); 43/**********************************************************************/ 44}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

期間指定を細かく区切らないと取得できる動画に抜けが出る場合が有るのは、
YouTube Data APIの既知のバグです。
https://qiita.com/yuji_saito/items/8f472dcd785c1fadf666
今のところ、期間指定を細かく区切って指定する以外に有効な手立てはありません。

投稿2022/02/06 10:19

編集2022/02/06 10:20
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MagicalWatosan

2022/02/06 10:29

なるほど.ありがとうございます. 期間指定を変えて試してみます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問