見出し画像

【Tips】Instagramの「いいね数」などのデータを自動集計してみた

「Instagramの分析に力を入れてみたいな〜」

「Instagramのいいね数とかのデータを
自動で一覧で見れたらいいな〜」


そう思って、やり方を調べた結果、
InstagramグラフAPIを使うことで
実現できることが判明👀💡

自動集計系のツールは有料販売されているので、
自分で組む方法というのは、有料級の情報!
・・・な気がしたのですが、なんと
参考にした記事は無料公開されていた…..

その記事を読んでもらうのが1番良いんだけど
一応私のnote上にも、備忘録的な感じで
さら〜っと残しておくので、
興味がある方は、ぜひ読みながら
一緒に手を動かしてみてください♫


全体の手順

  1. インスタグラムのアカウントを、
    プロorクリエイターに切り替え

  2. facebookページを作成

  3. facebook開発者アカウントを登録

  4. facebookアプリ設定

  5. 各種トークンの取得

  6. GoogleAppsScriptで処理を入力



1.インスタグラムのアカウント切り替え

アカウントの設定から、切り替えます。
私は「クリエイターアカウント」にしてます。

このアカウント種別だと、
投稿の日時指定もできるので便利!

ちょっとした補足


2.facebookページを作成

facebookページとは、
アカウントとは別に作れるページで、
掲示板みたいな感じです。

このページを、1で設定した
プロアカウントのInstagramと
紐づけておきます。

紐付け後にスクショしたので、
多分ちょっと表示が違うかも…
まぁでも、ニュアンスこんな感じです。笑


3.facebook開発者アカウントを登録

以下のページから、開発者アカウントを作ります。

https://developers.facebook.com/


4.facebookアプリ設定

アプリって言っても、
スマホアプリとかそういうのではなく
後述するトークン取得のための事前準備
という感じです。


5.各種トークンの取得

InstagramグラフAPIの利用に必要な
次の4つのアクセストークンを取得します。

  • ユーザーアクセストークン

  • facebookページID

  • InstagramビジネスアカウントID

  • ページアクセストークン


まず、グラフAPIのために使う
グラフAPIエクスプローラー
権限を追加するための
「ユーザーアクセストークン」を取得。
右側のボタンで、コピーして控えてください〜

その下では、オプションの追加ができるようになっています。

「✖️」がややこしいんだけど
これらが追加でアクセス許可したモノたち
という感じ。


次に、facebookページIDを取得します。
取得方法は、WebブラウザのURL欄に、
以下を打ち込んでEnterでOK

https://graph.facebook.com/v13.0/me/accounts?access_token=ユーザーアクセストークン

太字の、ユーザーアクセストークン
先ほど取得したアクセストークンを
貼り付けてください。

Enterを押した結果の中に、
facebookページIDがあるので
このページはこのまま開きっぱにしておこう。

黄色で塗りつぶした部分が、facebookページID


その次は、InstagramビジネスアカウントIDを取得。
facebookページIDと同様、
以下をブラウザのURL箇所に入力+Enter。

https://graph.facebook.com/v13.0/取得したページのID?fields=instagram_business_account&access_token=取得したアクセストークン

取得したページのID → 先程のfacebookページID
取得したアクセストークン → この章の最初の方で取得したアクセストークン


上のID(赤色):InstagramビジネスアカウントID
下のID(黄色):FacebookページID


最後にページアクセストークンを取得。

最初に使用した、
グラフAPIエクスプローラーで、
「ユーザーまたはページ」で
今回作成してるFacebookページを選択し
トークンを発行します。


6.GoogleAppsScriptで処理を入力

ソースは、一旦、以下をコピペして
GoogleAppsScriptに貼り付けて、
IDやトークンなどの部分を変更すれば完成。

// スプレッドシートに書き込む関数
function writeSheet(){
  var instragramID = 'InstagramプロアカウントID'; //変更箇所 適宜アカウント情報を入力してください。
  var username = 'Instagramユーザー名'; //変更箇所 instagramのユーザー名です。アルファベットで登録してあるものです。
  var ACCESS_TOKEN = 'ページアクセストークン'; //
  var spreadsheetID = 'スプレッドシートID';
  var spreadsheet = SpreadsheetApp.openById(spreadsheetID); //IDで操作するスプレッドシートを選択
  var sheetTemp = spreadsheet.insertSheet(); //スプレッドシートに新規のシートを作成
  var today = new Date(); //日付を取得
  var todayStr = Utilities.formatDate(today, 'JST', 'yyyy/MM/dd hh:mm');  // 日付を指定した形式変更
  var sheetName = username + todayStr; //シートの名前
  var sheet = sheetTemp.setName(sheetName); //シートの名前をユーザー名+日付に変更
  medias = getInstagramMedia(instragramID,username,ACCESS_TOKEN); //後述する投稿データ(メディア)を取得する関数を呼び出す。
  sheet.appendRow(['投稿id','投稿日','コメント数','いいね数','投稿URL','画像URL','フィードタイプ','投稿文字数','タグ数','タグ']); //取得する内容の列名を書き込む。
  // 投稿データを1列ずつ呼び出し書き込む    
  for (var i in medias) {
  sheet.appendRow(medias[i]);
  }
}


// 投稿データ(メディア)を取得する関数
function getInstagramMedia(instragramID,username,ACCESS_TOKEN) {

// 取得するデータとして投稿データ(メディア)を選択
  var fields_user_url = 'media';
// 投稿データ(メディア)取得項目(メディアID、投稿日時、コメント数、いいね数、投稿リンク、メディアリンク、メディアタイプ、投稿内容)
  var fields_media_url = 'id,timestamp,comments_count,like_count,permalink,media_url,media_product_type,caption';
// API用URL取得
  var instagram_API_url = 'https://graph.facebook.com/v13.0/' + instragramID + '?fields=business_discovery.username('+ username + '){' + fields_user_url + '{' + fields_media_url + '}}&access_token=' + ACCESS_TOKEN;
  console.log(instagram_API_url); //URLの確認、エラーが出たらWEBブラウザに入力
  // エンコード(外国語に翻訳するイメージ)を実施してプログラムが読める状態にする
  var instagram_API_url_encode = encodeURI(instagram_API_url);
  //URLからデータを取得 JSONという形式に変更する
  var rsponse = UrlFetchApp.fetch(instagram_API_url_encode); 
  var jsonInstagram = JSON.parse(rsponse);//JSONデータをパース

  // 投稿データ(メディア)をJsonから抽出する
  var media = jsonInstagram['business_discovery']['media']['data'];
  // 初期値宣言(おまじないと思ってください。)
  var medias = [];
  var caption = [];
  var tag = [];
  //投稿データ(メディア)を取得する(1行ずつ繰り返す)
  for (var i in media) {
    //投稿本文を抽出
    caption = [jsonInstagram['business_discovery']['media']['data'][i]['caption']];
    medias[i] = [
        jsonInstagram['business_discovery']['media']['data'][i]['id'], //メディアID
        jsonInstagram['business_discovery']['media']['data'][i]['timestamp'], //メディアの投稿日時
        jsonInstagram['business_discovery']['media']['data'][i]['comments_count'], //コメント数
        jsonInstagram['business_discovery']['media']['data'][i]['like_count'], //いいね数
        jsonInstagram['business_discovery']['media']['data'][i]['permalink'], //投稿へのリンク
        jsonInstagram['business_discovery']['media']['data'][i]['media_url'], //メディアへのリンク
        jsonInstagram['business_discovery']['media']['data'][i]['media_product_type'], //投稿のタイプ
        caption[0].length, //投稿本文の文字数
      ];
      tag = caption[0].match(/[##][A-Za-zA-Za-z一-鿆0-90-9ぁ-ヶヲ-゚ー._-]+/gm); //#ハッシュタグの抽出
      if(tag === null){
      //タグが無ければ何もしない
      }else{
        // タグ数をカウント
        tag.unshift(tag.length)
        medias[i] = medias[i].concat(tag);
      }
  }
      return medias //投稿データを返す
}

スプレッドシートのIDは、
URL欄に表示される/d/と/edit/の間の文字列!

またまた補足


実行結果

いいね数が入ってないところもある…w
けど、ひとまず、こんな感じのことが
できましたとさ!イェ〜い


fin.お疲れ様でした

トークン取得らへんが、ちょっと
手こずるかも?…

1度流れを掴んでから、
ソースの細かい部分を勉強がてら
読んでみると良いかも。

…と書いてる私も、
昨夜23時頃、参考記事に辿り着き
一通りやってみただけなので
ここから調整をかけて
自分が分析しやすいように
してみたいな〜と思ってます…!


以上お疲れさまでした〜!
結構、脳みそ疲れたと思うので
夜はゆっくり休んでね❤️www

この記事が気に入ったらサポートをしてみませんか?