いろいろなAPIを実行してみようシリーズです。
ちなみに以前にYoutubeのAPI実行してみました。Youtubeのやつは以下です。
んで、今回はみんな大好きinstagramのAPIを実行してデータを取得したいと思います。
手順はなかなか大変だったのでどんなデータが取得できるのかの紹介だけしようと思います。
目次
事前準備
今回のinstagramのAPIを実行するには事前準備が必要になります。
この事前準備がかなり大変…。面倒くさいです…。
準備としては以下の項目です。これが時間かかります。
- instagramのアカウントをプロアカウントへ変更
- Facebookのページ作成
- APIのアクセストークンを3段階で取得
記事に書くのも時間かかりそうです…。なので割愛します!調べたらすぐ出てきますしヘ(′ェ`)ゝ
APIをブラウザでリクエスト
APIのパラメータとしては以下のGIメディアを参照して設定してます。
https://developers.facebook.com/docs/instagram-api/reference/ig-media#fields
そしてパラメータを設定したものでリクエスト実行してみます。
https://graph.facebook.com/v12.0/「自分のID」?fields=media{timestamp,like_count,media_type,comments_count,permalink}&access_token=「自分のアクセストークン」
こんな感じで投稿毎にデータを取得できます。
今回取得したデータは、以下の5つです。それぞれ正しく取得できてます。
- 投稿日時
- いいね数
- メディアタイプ
- コメント数
- リンク
コード
こんな感じです。とくに変わったことはしてないです。
リクエストした結果をセルに表示しているだけですね。
function dataCollection() {
var business_account_ID = "自分のビジネスアカウントID";
var access_token = "自分のアクセストーク";
var facebook_url = "https://graph.facebook.com/v12.0/" + business_account_ID + "?fields=media{timestamp,like_count,media_type,comments_count,permalink}&access_token=" + access_token;
// JSONデータ取得
var json = UrlFetchApp.fetch(encodeURI(facebook_url)).getContentText();
var jsonData = JSON.parse(json);
// InstDataシートを選択
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('InstData');
// セルを削除
DeleteCell();
var row = 2;
// 取得したJSONデータの数
var dataCnt = jsonData['media']['data'].length
// 取得したデータの分だけくり返し
for(var i=0; i<dataCnt; i++){
var timestamp = jsonData['media']['data'][i]['timestamp']; // timestamp=投稿日時
var likecount = jsonData['media']['data'][i]['like_count']; // like_count=いいね数
var mediatype = jsonData['media']['data'][i]['media_type']; // media_type=メディア種別
var commentscount = jsonData['media']['data'][i]['comments_count']; // comments_count=コメント数
var permalink = jsonData['media']['data'][i]['permalink']; // permalink=リンク
// データをセルに表示していく
sheet.getRange(row,1).setValue(Utilities.formatDate(new Date(timestamp), 'Asia/Tokyo','yyyy/MM/dd HH:mm:ss'));
sheet.getRange(row,2).setValue(likecount);
sheet.getRange(row,3).setValue(mediatype);
sheet.getRange(row,4).setValue(commentscount);
sheet.getRange(row,5).setValue(permalink);
row++;
}
}
function DeleteCell(){
// InstDataシートを選択
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('InstData');
//最終行を取得
var lastRow;
lastRow = sheet.getLastRow();
//指定セルに値があるか検証
if(sheet.getRange(2, 1).getValue()){
//指定セルに値があった場合すべての内容を削除
sheet.getRange(2,1,lastRow,5).clearContent();
}
}
実行結果
こんな感じで結果を表示できています。いい感じですね!
特に隠す理由はないですが、なんとなくリンクは手動で削除しました。
最後
instagramのAPIを実行してデータを取得する方法でした。
このデータを取得したからといって何かをするわけではないんですが、一覧化できるのは素晴らしいですね!
とくにかく今回は実行するまでに時間がかかりました。手順が大変でした。