ADVERTISEMENT

【Googleスプレッドシート】Facebookページ投稿のインサイト取得!Graph APIの使い方

【Googleスプレッドシート】Facebookページ投稿のインサイト取得!Graph APIの使い方
🛡️ 超解決

Facebookページを運用していると、各投稿のいいねやコメント、リーチなどのインサイトデータを確認したい場面があります。しかし、Facebookの管理画面で一つずつ見るのは手間がかかります。そこで役立つのが、Facebook Graph APIとGoogleスプレッドシートの連携です。この記事では、Graph APIを使って必要なインサイトデータをスプレッドシートに自動で取得する方法を、具体的な手順とともに解説します。

初心者の方でも安心して進められるよう、Access Tokenの発行から関数の組み方、Apps Scriptを使った応用までを丁寧に説明します。これにより、毎回手動でデータをコピーする作業から解放されます。

【要点】Graph APIでFacebookページのインサイトをスプレッドシートに取得する方法

  • Facebook Graph API ExplorerでAccess Tokenを発行: データ取得に必要な認証トークンを簡単に発行できます。
  • IMPORTDATA関数でJSONデータをインポート: 関数一つでAPIから返ってきたデータをスプレッドシートに取り込めます。
  • Apps Scriptで定期的にデータを自動取得: トリガーを設定すれば、毎日最新のインサイトを自動更新できます。

ADVERTISEMENT

Graph APIでインサイトを取得する仕組み

Facebook Graph APIは、FacebookプラットフォームのデータにアクセスするためのAPIです。ページの投稿データやインサイト(いいね、リーチ、インプレッションなど)をJSON形式で取得できます。APIを呼び出すには、有効なAccess Tokenが必要です。このTokenは一時的なものなので、定期的に更新する必要があります。

Googleスプレッドシートから直接APIを叩く方法として、IMPORTDATA関数を使うシンプルな方法と、Apps Scriptを用いてより柔軟にデータを取得する方法があります。それぞれの特徴を理解して、自分の目的に合った方法を選びましょう。

IMPORTDATA関数を使って手軽に取得する手順

IMPORTDATA関数は、URLからCSVやTSV、JSONをインポートできる便利な関数です。ただし、Facebook APIは認証が必要なため、Access TokenをURLに含めてリクエストします。セルに以下のように入力します。

  1. Access Tokenを取得する
    Facebook Graph API Explorer(developers.facebook.com)にアクセスし、「Page Access Token」を発行します。スコープは「pages_read_engagement」「pages_read_user_content」などを選択します。
  2. APIエンドポイントのURLを作成する
    例:=IMPORTDATA("https://graph.facebook.com/v19.0/[ページID]/posts?fields=id,message,likes.limit(1).summary(true),shares&access_token=[アクセストークン]")
    エンドポイントはページの投稿一覧を取得するものですが、フィールドパラメータを調整してインサイトに特化することもできます。
  3. データを整形する
    IMPORTDATAで返されるのはJSONですが、スプレッドシートでは自動的にパースされず、文字列として表示されることが多いです。そのため、他の関数(REGEXEXTRACTなど)と組み合わせて必要な値を抽出します。もしくは、より簡潔にインサイトだけを取得するエンドポイントを使います。
    =IMPORTDATA("https://graph.facebook.com/v19.0/[ページID]/insights?metric=page_impressions,page_engaged_users&period=day&access_token=[アクセストークン]")

Apps Scriptで柔軟に自動取得する手順

IMPORTDATA関数ではリクエストヘッダーの設定やエラーハンドリングが難しいため、より複雑な取得や定期更新にはApps Scriptが適しています。以下では、スクリプトエディタを使ってインサイトデータを取得する方法を説明します。

  1. スクリプトエディタを開く
    スプレッドシートのメニューから「拡張機能」→「Apps Script」をクリックします。
  2. コードを記述する
    以下のサンプルコードを貼り付けます。ページIDとAccess Tokenは自分のものに置き換えてください。
    function fetchFacebookInsights() {
    var pageId = 'あなたのページID';
    var accessToken = 'あなたのアクセストークン';
    var url = 'https://graph.facebook.com/v19.0/' + pageId + '/insights?metric=page_impressions,page_engaged_users&period=day&access_token=' + accessToken;
    var response = UrlFetchApp.fetch(url);
    var json = JSON.parse(response.getContentText());
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    // データをシートに書き込む処理を記述
    for (var i = 0; i < json.data.length; i++) {
    var row = [json.data[i].name, json.data[i].values[0].value];
    sheet.appendRow(row);
    }
    }
  3. トリガーを設定する
    スクリプトエディタの左メニューから「トリガー」をクリックし、「トリガーを追加」を選択します。関数を「fetchFacebookInsights」、イベントソースを「時間主導型」にして、実行間隔を「日タイマー」などに設定します。これで毎日自動実行されます。

ADVERTISEMENT

よくあるエラーと対処法

Access Tokenが期限切れになる

FacebookのAccess Tokenには有効期限があります。特に短期トークンは数時間で切れるため、長期トークン(60日間有効)を取得するか、Apps Script内でトークンを更新する処理を組み込む必要があります。長期トークンを取得するには、Graph API Explorerで「Access Token」の「Extend Token」ボタンを押すか、以下のエンドポイントを使用します。
GET /oauth/access_token?grant_type=fb_exchange_token&client_id=[アプリID]&client_secret=[アプリシークレット]&fb_exchange_token=[短期トークン]

APIのレート制限に達する

Facebook APIには呼び出し回数の制限があります。短時間に大量のリクエストを送るとエラーになります。Apps Scriptで実行する場合、スクリプトの実行間隔を十分に空ける(1時間以上)ようにしましょう。また、取得するデータ量を最小限にするために、必要なフィールドだけを指定してください。

IMPORTDATAでJSONが正しくパースされない

IMPORTDATA関数はJSONを自動でセルに展開しないため、結果が1セルに文字列として表示されることがあります。この場合、他の関数(SPLIT、REGEXEXTRACTなど)を使ってデータを分割するか、Apps Scriptに切り替えることをおすすめします。

IMPORTDATAとApps Scriptの比較

項目 IMPORTDATA Apps Script
設定の手軽さ 関数を入力するだけなので非常に簡単 コードの記述が必要で初心者にはやや難しい
データの自動更新 スプレッドシートが開かれたときに再計算されるが定期実行は不可 トリガーで時間指定の自動実行が可能
エラーハンドリング エラーが起きると#REF!や#N/Aが表示され原因がわかりにくい try-catchでエラーをキャッチして適切に処理できる
カスタマイズ性 関数の引数で制御可能だが限定的 自由にロジックを組めるため高度な加工が可能

まとめ

この記事では、Facebook Graph APIを使ってページ投稿のインサイトデータをGoogleスプレッドシートに取得する方法を解説しました。IMPORTDATA関数を使えば数秒でデータを取り込めますが、自動更新やエラー対応にはApps Scriptが適しています。まずは簡単なIMPORTDATAで試し、慣れてきたらApps Scriptで本格的な自動化に挑戦してみてください。Access Tokenの管理に注意しながら、インサイト分析を効率化しましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。