スプレッドシートでYouTubeの情報を引っ張りたくて調べてみたら、AppsScriptを使用することが判明しました。
ちょっと難しいそうでしたが、しっかりやり方を見ればできましたので備忘録として書いてみます。
※スプレッドシートに関しては無料で使えるエクセル『Googleスプレッドシート』をごらんください。
※この機能を実装するにはYouTubeAPIが必要です。過去記事【YouTube API】APIキーの取得方法(Google Deveroper Console)をご覧ください。
YouTube動画の再生数を取得するスクリプトを書く
今回はE列からYouTube IDを取得して、F列に再生数を入力していきます。
シートが複数になることも想定して、『DB』という名称のシートを指定する方法とします。
(1)スプレッドシートの上メニューで 拡張機能 > Apps Script をクリック。
(2)(1)をクリックすると下記のようなページが開けます。ここに、スクリプトを書きこみます。
(3)下記のスクリプトを書きこみます。今回はQiita記事『YouTubeのリアルタイム再生回数をスプレッドシートに自動で反映させる方法』を参考にさせていただきました。下記のコードを自身の環境の数値・文字列に書き換え貼り付けます。(デフォルトで書き込まれているコードを消しても問題ありません。)
- 1行目のfunction getMovieViews() {…}の『getMovieViews』はスクリプトの名称になるのでわかりやすい名称にしてください
- 5行目のgetSheetByName(‘DB’);の『DB』はシート名です。対象のシート名を入力してください。
- 8行目のgetRange(2,5,sheet.getLastRow())はYouTubeIDの取得箇所です。今回はE2列から取得するので『2,5,sheet.getLastRow』となります。(例:C1から取得の場合は『1,3,sheet.getLastRow』)
- 16行目の『先ほど取得したAPIキー』にあなたの取得したAPIキーに差し替えてください。
- 26行目の『getRange(row+2,6)』は再生数を書き込む列です。今回はF2から書き込みたいので『(row+2,6)』となります。(例:D1から書き込みたい場合は『(row+1,4)』)
function getMovieViews() {
//sheetオブジェクト作成『getSheetByName』に対象のシート名を記載
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName('DB');
//動画IDが記入されたセルのrangeオブジェクトを作成
const range_id=sheet.getRange(2,5,sheet.getLastRow())
//作成したrangeオブジェクトから動画IDを配列で作成する
const values=range_id.getValues()
//YouTube APIに送信するクエリを作成する
const qury_array=values.map(id =>"&id="+id)
var qury= qury_array.join("")
var json_url="https://youtube.googleapis.com/youtube/v3/videos?part=statistics"+qury+"&key=先ほど取得したAPIキー";
//YouTube APIからデータを受診する
var json=UrlFetchApp.fetch(json_url).getContentText();
var jsonData=JSON.parse(json);
//結果をセルに記入する
for (let row=0; row<values.length; row++){
if(jsonData.items[row]){
Logger.log(jsonData.items[row]['statistics']['viewCount']);
sheet.getRange(row+2,6).setValue(jsonData.items[row]['statistics']['viewCount']);
}
}
}
(4)問題なく実行できるか確認します。上のメニューの『実行』をクリックします。
①のプルダウンでスクリプトを選択します。(3)の1行目のスクリプト名を選択します。今回は『getMovieViews』
②『実行』をクリックして実行します。
(5)『権限を確認』を行います。実行するアカウントを選択して確認を行います。
(6)実行結果が、ページ下のログに表示され、『実行完了』が表示され、スプレッドシートに再生数が表示されれば完了です。
自動で定期的に再生数を取得する
目まぐるしく変化するYouTubeの再生数を手動で更新するのは大変ですので、自動で定期的に取得するように設定します。
(1)スプレッドシートの上メニューで 拡張機能 > Apps Script をクリック。
(2)左メニューにストップウォッチみたいなアイコンがあるのでクリック
(3)右下の『トリガーを追加』をクリックします
(4)トリガー(時限)の詳細設定を行います。
①スクリプト名を選択します。今回は『getMovieViews』
②『時間手動型』を選択します。
③『時間ベースのタイマー』を選択します。
④どのくらいの間隔で取得するかを設定します。今回私は『8時間おき』にしました。
⑤『保存』をクリックして設定完了です。
設定した内容が表示されるトリガー一覧ページが表示されます。
自動で定期的に取得できているか確認
問題なく実行できているかの確認します。
AppsScriptのページの左メニューから、3本線のアイコンをクリックします。
実行の履歴が表示されるので、先ほど設定した『次回主導型』の種類の実行履歴があればOKです。
おわりに
と、いうことで『YouTube動画の再生数をスプレッドシートで取得する』でした。
今回の方法ですと50件までの再生数取得となりますが、下記の記事では50件以上の動画の再生数を取得できるように改良しています。
是非、併せてごらんください。
スプレッドシートには他にもたくさんの便利機能があるので、紹介していきたいと思います。
この記事のスクショ元のスプレッドシート『STGVのカヴァー曲まとめ(スプレッドシート関数サンプル)』、『STGVのカヴァー曲まとめ(スプレッドシート関数サンプル)_再生数定点』で公開してます。
他にもいろいろな関数を使用してますので、参考に見て行ってください。
このスプレッドシートで収集・集計しているのは、私の応援している大分県の仲良しミュージシャンSTGVのメンバーの方がYouTubeチャンネルにアップしているカヴァー曲の情報です。
データを使用して、カヴァー曲のまとめ記事を書いています。
『おすすめカヴァーが付いている記事一覧』でまとめています。好きな曲、アーティスト、ジャンルがあったらぜひぜひ聴いていってください。
コメント