GAS(GoogleAppScript) GCP

【GAS】Instagram Graph APIを使ってプロフィール画面のインサイト情報を取得する

この記事は約10分で読めます。

 

前回に引き続いてInstagram Graph APIをGASから叩いてインスタグラムアカウントのフォロワー数やインサイト取得処理をGASで実装した過程についてメモしておきます

 

関連記事:【GAS】Instagram Graph APIを使って投稿ごとのインサイト情報を取得する

 

前準備

 

Instagram Graph APIを使用するためにはアクセストークンとプロアカウントになっているインスタアカウントの内部ID(FBアカウントの内部IDではない)が必要になります。

 

取得方法については以下の記事で紹介しているのでまだの方はそちらを参照してください

【2023年版】Instagram Graph APIのアクセストークンを取得する方法

 

Instagram Graph APIを使ってプロフィール画面のインサイト情報を取得する

 

プロフィールのインサイト情報はInstagram Graph APIの「/insights」というコンポーネントで取得できます。詳しくは以下のAPIドキュメントに記載されています

 

リクエストを処理できませんでした - Meta for Developers

 

制限

 

  • follower_countonline_followersaudience_*は、フォロワーが100人以下のIGユーザーには利用できません。
  • online_followers指標のインサイトデータは、過去30日間についてのみ利用できます。
  • リクエストしたインサイトデータが存在しない場合、または現在アクセスできない場合、APIは個別の指標で0ではなく空のデータセットを返します。
  • 利用者層データ指標で返されるのは、上位45件のみです(例: audience_cityの場合、フォロワー数で上位45の都市が返されます)。
  • 利用者層データ指標の計算で使われるのは、当社に利用者層データがある閲覧者だけです。
  • 利用者層データ指標値を合計しても、フォロワー数より少ない場合があります(前の項目を参照)。
  • audience_*指標において、sinceuntil範囲パラメーターはサポートされていません。
  • 指標計算に使用されるデータは、最大で48時間遅れている可能性があります

 

リクエストの構文

GET https://graph.facebook.com/{api-version}/{ig-user-id}/insights
  ?metric={metric}
  &period={period}
  &since={since}
  &until={until}
  &access_token={access-token}

クエリ文字列パラメーター

 

パラメーター
{access-token}
必須
文字列
アプリユーザーのユーザーアクセストークン。
{metric}
必須
コンマ区切りリスト
戻り値を取得する指標のコンマ区切りリスト。複数の指標をリクエストする場合には、すべての指標の期間が互換性のある同じものである必要があります。
{period}
必須
文字列
リクエストしている指標と互換性がある期間
{since}
UNIXタイムスタンプ
範囲を定義するために{until}と組み合わせて使用します。sinceuntilを省略した場合、APIのデフォルトである2日間(昨日から今日まで)が使用されます。

: ページネーションカーソル(previousnext)は、現在の期間内における次の結果バッチではなく、次の期間の結果を取得します。

{until}
UNIXタイムスタンプ
範囲を定義するために{since}と組み合わせて使用します。sinceuntilを省略した場合、APIのデフォルトである2日間(昨日から今日まで)が使用されます。

: ページネーションカーソル(previousnext)は、現在の期間内における次の結果バッチではなく、次の期間の結果を取得します。

指標と期間

 

lifetime期間がサポートされている指標では、24時間の期間からなる配列で返されます。各期間はUTC−07:00で終了します。audience_*指標は、sinceuntil範囲パラメーターをサポートしません。

指標 互換性のある期間 説明
audience_city lifetime Metaが持っている利用者層データのフォロワーの市町村。

  • 当日のデータは含まれません。
  • フォロワーが100人未満のIGユーザーは省かれます。
  • 返されるのは値の高い順に上位45の市町村のみです。
  • sinceuntilのパラメーターはサポートされていません。
  • 応答にend_time JSONプロパティは含まれません。
audience_country lifetime Metaが持っている利用者層データのフォロワーの国。

  • 当日のデータは含まれません。
  • フォロワーが100人未満のIGユーザーは省かれます。
  • 返されるのは値の高い順に上位45の国のみです。
  • sinceuntilのパラメーターはサポートされていません。
  • 応答にend_time JSONプロパティは含まれません。
audience_gender_age lifetime Metaが持っている利用者層データのフォロワーの性別と年齢の分布。指定できる値は、M (男性)、F (女性)、U (指定しない)です。

  • 当日のデータは含まれません。
  • フォロワーが100人未満のIGユーザーは省かれます。
  • sinceuntilのパラメーターはサポートされていません。
  • 応答にend_time JSONプロパティは含まれません。
audience_locale lifetime Metaが持っている利用者層データのフォロワーの国コード別ロケール。

  • 当日のデータは含まれません。
  • フォロワーが100人未満のIGユーザーは省かれます。
  • 返されるのは値の高い順に上位45のロケールのみです。
  • sinceuntilのパラメーターはサポートされていません。
  • 応答にend_time JSONプロパティは含まれません。
email_contacts day IGユーザーのプロフィールにあるメールリンクの合計タップ数。
follower_count day 指定された期間内の各日の新規フォロワー数の合計。最大30日分のデータが返されます。フォロワーが100人未満のIGユーザーは省かれます。
get_directions_clicks day IGユーザーのプロフィールにある指示リンクの合計タップ数。
impressions dayweekdays_28 IGユーザーIGメディアが閲覧された合計回数。API、Facebook広告インターフェイス、宣伝機能により生成された広告アクティビティを含みます。プロフィールの閲覧は含まれません。
online_followers lifetime IGユーザーのフォロワーのうち、指定された期間にオンラインだったフォロワーの合計数。フォロワーが100人未満のIGユーザーは省かれます。
phone_call_clicks day IGユーザーのプロフィールにあるコールリンクの合計タップ数。
profile_views day 指定された期間内にIGユーザーのプロフィールを閲覧したユーザーの合計数。
reach dayweekdays_28 IGユーザーのIGメディアを1つ以上閲覧したユニークユーザーの合計数。ユーザーが、同じIGメディアを繰り返し閲覧した場合や、同一IGユーザーの所有する別のIGメディアを閲覧した場合は、1回の閲覧としてカウントされます。API、Facebook広告インターフェイス、宣伝機能により生成された広告アクティビティを含みます。
text_message_clicks day IGユーザーのプロフィールにあるSMSリンクの合計タップ数。
website_clicks day IGユーザーのプロフィールにあるウェブサイトリンクの合計タップ数。

範囲

 

このエッジは時間ベースのページネーションをサポートしているため、Unixタイムスタンプを使ってsinceパラメーターとuntilパラメーターを含めることにより範囲を定義できます。例えば、28日分のインプレッションを取得するには(過去10日間の毎日)、10日前今日のUnixタイムスタンプを生成し、それらをsinceパラメーターとuntilパラメーターに割り当ててリクエストに含めます:

 

metric=impressions&period=days_28&since=1501545600&until=1502493720

 

sinceパラメーターとuntilパラメーターには指定された日付が含まれるため、まだ終了していない日(つまり今日)が範囲に含まれる場合は、その日に何度かクエリを行うとそのたびに返される値が増える可能性があります。sinceパラメーターとuntilパラメーターを指定しない場合、APIのデフォルトである2日間(昨日から今日まで)が使用されます。

 

GASでのサンプルコード

 

以下がGASからInstagram Graph APIを使ってプロフィール画面のインサイト情報を取得するサンプルコードになります。

 

// プロフィール画面のインサイト情報を取得してスプレッドシートに書き込む関数
function get_profile_insight(){
  response = UrlFetchApp.fetch(urlOf(endpoint_base + '/insights', {
    "access_token":access_token,
    'metric': 'impressions,follower_count,profile_views,reach,website_clicks',
    'period': 'day',
  }))

  var result = JSON.parse(response.getContentText()); // レスポンスをjsonに変換する
  console.log(result['data'].length)
  return result
}


function main(){
  const access_token='xxxx' // 無期限アクセストークン
  const instagram_account_id = "xxxx" //自分のインスタグラムアカウント内部ID
  const version = 'v16.0' // APIのバージョン
  const graph_domain = 'https://graph.facebook.com/' // APIエンドポイント
  const endpoint_base = graph_domain + version +'/'+instagram_account_id
  data = get_profile_insight()
  console.log(data)
}

 

 

実行すると以下のような連想配列にそれぞれのインサイト情報が格納されたレスポンスが返されます

 

<実行結果>

 

 

これをmapとかでいい感じに加工してスプレッドシートに追記すると日ごとのインサイトが自動で取得できるような処理が作れます

 

関連記事:【GAS】スプレッドシートの最後の行にデータを追加するサンプルコード

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

  1. […] 関連記事:【GAS】Instagram Graph APIを使ってプロフィール画面のインサイト情報を取得する […]

  2. […] 関連記事:【GAS】Instagram Graph APIを使ってプロフィール画面のインサイト情報を取得する […]

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