コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

本日のユーチューブ活動

本日の学び:YouTube APIの使い方を学ぶなどをした。

はい、どうも僕です。動画作らずにAPIばっかり触ってる僕です。APIしか触ってないマンだけど僕は自分のことYouTuber自称します。YouTube系YouTuber(?)とかどうだろうか?まあ、アホなこと言ってないでそういう作成工程を動画にするべきなんですよね……。まあいいや。さて、このブログなぜか知らないけども外部からGASやVBAのような効率化情報を求める検索ワードがよく引っかかるんですよね。なので、そういった期待に応えなきゃと思って、皆様のためにぃ……GAS(Google Apps Script)とYouTube APIの使い方メモを残しておこうと思います(誰得)。

とは言いましてもですね。GASからAPI利用するってなったらUrlFetchAppで一発なんですよね。

参考:UrlFetchApp
Class UrlFetchApp  |  Apps Script  |  Google Developers



けども、実際にわけわからんツール作ってみたらYouTube APIの使い方に軽くハマったのでメモを残しておきます。


API準備編

まずはAPI使う準備します。以下リンクからAPIを使うためのAPIキーを取得します。
Google Cloud Platform
f:id:andron:20191119204729p:plain
今回利用するやつはこれです。設定とかは……お任せします。


早速使ってみよう

APIが使えるようになったので早速触っていきます。んでAPIの使い方どこみればいいのかわからなくて小一時間さまよった。
API Reference  |  YouTube Data API  |  Google Developers
標準クエリパラメータ  |  YouTube Data API  |  Google Developers
上のやつが概要リンク、下のが基本パラメータに関するリンク。ここのkeyがどのAPI呼ぶのにも必須なのわからずにエラー出しまくってた。素直にQiitaとか参考にすれば一発だったね……。ただ、ああいうところ公式リンク貼ってくんないから情報古くなったときに対応できないのです……。

https://www.googleapis.com/youtube/v3/リソース?クエリ

んで、大まかなAPIの使い方こんな感じです。

んでGASの方にコードを書くとこんな感じ。

// API設定データ
var config = {
  API_KEY: 'あなたのAPIキー',
  part: 'snippet',
  channelId: ['チャンネルID']
}

// スプレッドシート設定データ
var sheet = {
  id: 'スプレッドシートID',
  name: 'シートの名前',
}

// スプレッドシートの指定
var spreadsheet = SpreadsheetApp.openById(sheet.id);
var sheet = spreadsheet.getSheetByName(sheet.name);

function myFunction() {
  // チャンネル情報取得
  // https://developers.google.com/youtube/v3/docs/channels/list
  var response = UrlFetchApp.fetch('https://www.googleapis.com/youtube/v3/channels?part='+config.part+'&id='+config.channelId[0]+'&key='+config.API_KEY).getContentText();
  var data = JSON.parse(response);
  //Logger.log(response);
  
  // 動画情報を取得
  // https://developers.google.com/youtube/v3/docs/search/list
  var response = UrlFetchApp.fetch('https://www.googleapis.com/youtube/v3/search?part='+config.part+'&channelId='+config.channelId[0]+'&order=date&key='+config.API_KEY).getContentText();
  var data = JSON.parse(response);
  //Logger.log(response);

  // スプレッドシートへの書き込み
  sheet.getRange("C2").setValue(data["items"][0]["snippet"]["thumbnails"]["default"]["url"]);
  sheet.getRange("D2").setValue(data["items"][0]["snippet"]["title"]);
  sheet.getRange("E2").setValue(data["items"][0]["snippet"]["description"]);
  sheet.getRange("F2").setValue("https://www.youtube.com/watch?v="+data["items"][0]["id"]["videoId"]);
}

作った当初はLogger.logAPI使えた―!とかで満足してたんですけどスプレッドシートとの連携が突然したくなってしまったのでスプレッドシートへの書き込みが混ざってしまった。ソースの方にもAPIのリンク貼ってるんだけで、改造したかったら自分でパラメータ確認してという方式。けどさ、チャンネルIDのパラメータがソースによってIDだったりChannelIDだったりするの罠でしょ。僕は小一時間ハマりました。




そう、スプレッドシート貼り付けまでするつもりなかったんですよね……。
go.glideapps.com
ただね、以前つかってたツールのサンプルみてたら僕が思っていたよりも自由度ありそうな気がしたので、次回更新するときはこれ使ってなんか作っていこうと思いたってスプレッドシート貼までやってしまった。Relation使うことで色々できるんですね……知らんかった。ですので、その機能をつかって次回なんか作りたいなーって思います。ネタの方はまだ探している途中ですけど……。どうしようかなー。YouTube使ったネタなんかないかなぁ。