【Tips】Instagramの「いいね数」などのデータを自動集計してみた
「Instagramの分析に力を入れてみたいな〜」
「Instagramのいいね数とかのデータを
自動で一覧で見れたらいいな〜」
そう思って、やり方を調べた結果、
InstagramグラフAPIを使うことで
実現できることが判明👀💡
自動集計系のツールは有料販売されているので、
自分で組む方法というのは、有料級の情報!
・・・な気がしたのですが、なんと
参考にした記事は無料公開されていた…..
その記事を読んでもらうのが1番良いんだけど
一応私のnote上にも、備忘録的な感じで
さら〜っと残しておくので、
興味がある方は、ぜひ読みながら
一緒に手を動かしてみてください♫
全体の手順
インスタグラムのアカウントを、
プロorクリエイターに切り替えfacebookページを作成
facebook開発者アカウントを登録
facebookアプリ設定
各種トークンの取得
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
※太字の、ユーザーアクセストークンに
先ほど取得したアクセストークンを
貼り付けてください。
Enterを押した結果の中に、
facebookページIDがあるので
このページはこのまま開きっぱにしておこう。
黄色で塗りつぶした部分が、facebookページID
その次は、InstagramビジネスアカウントIDを取得。
facebookページIDと同様、
以下をブラウザのURL箇所に入力+Enter。
取得したページの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 //投稿データを返す
}
実行結果
いいね数が入ってないところもある…w
けど、ひとまず、こんな感じのことが
できましたとさ!イェ〜い
fin.お疲れ様でした
トークン取得らへんが、ちょっと
手こずるかも?…
1度流れを掴んでから、
ソースの細かい部分を勉強がてら
読んでみると良いかも。
…と書いてる私も、
昨夜23時頃、参考記事に辿り着き
一通りやってみただけなので
ここから調整をかけて
自分が分析しやすいように
してみたいな〜と思ってます…!
以上お疲れさまでした〜!
結構、脳みそ疲れたと思うので
夜はゆっくり休んでね❤️www