【Instagram Graph API】Google Apps ScriptでInstagramのフォロワー推移表を作成しよう!

IGnGAS 技術

こんにちは!
いつもご覧いただきありがとうございます。

以前当ブログで「Google Apps Scriptを使ってスプレッドシートにInstagramのフォロワーの推移をグラフ化させよう」という記事を書いて多くの方に見ていただきました。
リンクもしていただいて嬉しい限りであります!

と思っていたのですが…。

IGnGASnGraphAPI
エラーだらけの人生

 

ここ1ヶ月くらいずっとエラー続きできちんとデータが取れていませんでした…。
そこで、その原因を探ってみることにしました。

リクエストは成功しているにも関わらず、
レスポンスのJSONデータが無効なものになっていました。
本来ブラウザで表示するとこんな感じでデータがたくさんあるのです…。

IGnGASnGraphAPI

しかしレスポンスのログを見てみると

IGnGASnGraphAPI

そもそも自分が見ているものとHTMLのlangから違う…
実際に見ているのはjaですべて日本語のになるはず。
これはGoogleのサーバーからアクセスしているからなのかな?という考えになり、
さらに、Instagramはボットなどからのアクセスを禁止しているのかな?という考えにもなり、
「スクレイピングを捨てる」ことにしました。
ちょっと罪悪感もあったし…。
(ベタのHTMLに書いたJSでのスクレイピングはうまくいきました。)

ここでInstagramの親会社のFacebookさんが提供している「Instagram Graph API」というものを発見しました。
なんだ、これでフォロワーの推移グラフ作れるじゃん!
ということで今回はGoogleスプレッドシートとGAS、Instagram Graph APIを使ってフォロワー推移グラフを作成しました。



APIの取得のためのInstagramとFacebookでの設定

まずAPIの取得に必要なことがあります。
それが「設定」です。

このAPIを有効にするためには

  • Instagramのビジネス(OR クリエイター)アカウント設定
  • Facebookでのサイト作成
  • APIトークン発行(3ステップ)

が必要です。
取得はTwitterAPIほど厳しくはないですが、結構時間がかかるので注意です!

ということで具体的な順序なのですが、
僕はこちらの記事を参考にしました。
めちゃくちゃ詳しく書いてくださってます。

Instagram Graph APIとGAS(Google Apps Script)を使ってインスタグラムのフォロワー数を自動的に日々記録する

スクリプトはこの記事のものをコピペしてもいいのですが僕は簡易版を作成したのでそれを紹介いたします。

 

スクリプト(簡易版)

コードはこちらです。

function InstaData() {
  const SSId = 'スプレッドシートID';
  
  const mySS = SpreadsheetApp.openById(SSId);
  
  const tblSheetName = 'シート名';
  
  const tblSheet = mySS.getSheetByName(tblSheetName)
  
  const date = new Date();
  
  const today = Utilities.formatDate(date, 'Tokyo/Asia', 'yyyy/MM/dd');
  
  tblSheet.insertRows(2,1);
  
  tblSheet.getRange("A2").setValue(today);

  const IG_BUSINESS_ID = '【Instagram business ID】';
  const IG_ACCOUNT = '【アカウント名】';
  const ACCESS_TOKEN = '【アクセストークン】';
  
//リクエストURLの作成
  var facebook_url = 'https://graph.facebook.com/v4.0/'+ IG_BUSINESS_ID +'?fields=business_discovery.username('+ IG_ACCOUNT +'){followers_count,follows_count,media_count}&access_token='+ ACCESS_TOKEN;

  // URLのエンコード
  var encodedURI = encodeURI(facebook_url);
  var response = UrlFetchApp.fetch(encodedURI);
  var jsonData = JSON.parse(response);
  var followers = jsonData['business_discovery']['followers_count'];
  
  tblSheet.getRange("B2").setValue(followers);
}

これで完成です。

あとはGoogleスプレッドシート側グラフを作成してください。

次は、毎日自動でこのスクリプトを動かすために「トリガー」の設定を行います。

トリガーの設定

GASでの自動化に必要なのが「トリガーの設定」です。

トリガーを設定することで、自分の設定したタイミングで自分の作ったスクリプトが起動できるのです!

今回は日ごとのフォロワーを取得したいので、「毎日22〜23時の間に一度だけデータを取得する」設定にします。

まずはスクリプトから、時計のアイコンをクリック!

 

そして「トリガー」のページに遷移するのでこちらで設定を行います。

右下の「トリガーを追加」をクリック!

するとポップアップが表示されるので

「イベントのソースを選択」は「時間主導型」に。

IGnGASnGraphAPI

 

一つ下に「時間ベースのトリガーのタイプを選択時間ベースのタイマー」という項目が表示されるので「日付ベースのタイマー」を選択。

IGnGASnGraphAPI

 

 次の「時刻を選択」で実行させたい時間を選択してください。

IGnGASnGraphAPI

右下の「保存」を押すと完成です。あとはトリガーがちゃんと動いてくれるのを願うのみです。

まとめ

Graph APIを取得するのに結構なステップを踏むので、そこが面倒で心が折れそうになりましたがなんとかしてAPIを取得することができました。

スクレイピングをしないのでソースコードがスッキリしました。

APIの利用でJSON形式のデータを扱うことが増えてきたのでちょっとはJSONくんと仲良くなれたかなといった印象です。



コメント

タイトルとURLをコピーしました