[GAS]Instagram Graph APIを用いてインサイト情報を取得する

2023/12/1

GAS
Instagram Graph API

弊社で運用しているインスタグラムのインサイト情報を取得して分析することにしました。
そこで、Instagram Graph APIを用いてインサイト情報を取得する方法をまとめました。

Instagram Graph API

インスタグラムのフォロワー数や投稿に対するインプレッションやいいねの数などのデータを取得することが出来ます。
Instagram Graph APIを利用するにはフェイスブックアカウントやフェイスブックページの作成、インスタグラムアカウントのプロアカウントへの切り替えといった準備が必要になります。

準備

Instagram Graph APIの利用に必要な準備は、下記の記事で非常に分かりやすくまとめられています。

https://navymobile.co.jp/instagram-graph-api

インスタグラムのビジネスアカントIDや(有効期限が無期限の)アクセストークンは後ほど使用するので、忘れずにメモしておいて下さい。

開発

スクリプトは以下のとおりです。
今回取得したい項目は、

  • フォロー
  • フォロワー
  • インプレッション
  • リーチ
    なので、APIをコールする際のURLもそのように設定しています。
    他の項目を取得する際は、公式のドキュメントを参考にしてURLを変更して下さい。
https://developers.facebook.com/docs/instagram-api
common.gs
// ================================================== 
// スプレッドシートを開いた際に呼び出される関数
// ==================================================
function onOpen(){
  //カスタムメニューを作成する
  const customMenu = [
    {
      name:'MenuName',
      functionName:'FunctionName'
    }
  ];

  SpreadsheetApp.getActiveSpreadsheet().addMenu('Instagram 情報取得', customMenu)
};
FunctionName
// ================================================== 
// Instagramビジネスアカウントの情報を取得する関数
// ==================================================
function getPostStat(instagramParams){
  const apiUrl = encodeURI('https://graph.facebook.com/v18.0/'+ instagramParams.accountID + '?fields=followers_count,follows_count&access_token=' + instagramParams.accessToken);

  const response = UrlFetchApp.fetch(apiUrl);
  const result = JSON.parse(response);

  return result;
};

// ================================================== 
// ソーシャルインタラクション指標の情報を取得する関数
// ==================================================
function getPostInsight(instagramParams){
  const apiUrl = encodeURI('https://graph.facebook.com/v18.0/'+ instagramParams.accountID + '/insights/' + '?metric=follower_count,impressions,reach&period=day&access_token=' + instagramParams.accessToken);

  const response = UrlFetchApp.fetch(apiUrl);
  const result = JSON.parse(response);

  return result;
};

// ================================================== 
// メイン関数
// ==================================================
function bnb_irori(){
  // Instagramビジネスアカウントのパラメーター
  const instagramParams = {
    accessToken:'xxxxxxxxxx', //アクセストークン
    accountID:'xxxxxxxxxx', //ビジネスアカウントID
    userID:'xxxxxxxxxx' //ユーザーID
  };

  //Instagramビジネスアカウントの情報を取得する
  const postStat = getPostStat(instagramParams);

  // ソーシャルインタラクション指標の情報を取得する
  const postInsight = getPostInsight(instagramParams);

  //スプレッドシートのアクセスパラメーター
  const spreadSheetParams = {
    fileID:'xxxxxxxxxx', //スプレッドシートID
    sheetName:'xxxxxxxxxx' //スプレッドシート名
  };

  //スプレッドシートを開く
  const spreadsheet = SpreadsheetApp.openById(spreadSheetParams.fileID);
  const sheet = spreadsheet.getSheetByName(spreadSheetParams.sheetName);
  const lastRow = sheet.getLastRow();
  
  // Instagramビジネスアカウントの情報を配列に格納する
  let statArray = [];
  for(let data in postStat) {
    statArray.push(postStat[data]);
  };

  statArray.pop();

  // ソーシャルインタラクション指標の情報を配列に格納する
  let insightArray = [];
  
  postInsight['data'].forEach((data) => {
    insightArray.push(data['values'][0]['value']);
  });

  // Instagramビジネスアカウントの情報とソーシャルインタラクション指標の情報をスプレッドシートに出力する
  let array = [];
  let today = new Date();

  array.push(today);
  array = array.concat(statArray);
  array = array.concat(insightArray);

  sheet.getRange(lastRow + 1, 1, 1, array.length).setValues([array]);
};

GASを実行すると、Instagram Graph APIで取得した項目がスプレッドシートに出力されます。
実行方法は「Instagram 情報取得」タブの「FunctionName」をクリックするだけです。

001.png

今回はここまでです。