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に含めてリクエストします。セルに以下のように入力します。
- Access Tokenを取得する
Facebook Graph API Explorer(developers.facebook.com)にアクセスし、「Page Access Token」を発行します。スコープは「pages_read_engagement」「pages_read_user_content」などを選択します。 - APIエンドポイントのURLを作成する
例:=IMPORTDATA("https://graph.facebook.com/v19.0/[ページID]/posts?fields=id,message,likes.limit(1).summary(true),shares&access_token=[アクセストークン]")
エンドポイントはページの投稿一覧を取得するものですが、フィールドパラメータを調整してインサイトに特化することもできます。 - データを整形する
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が適しています。以下では、スクリプトエディタを使ってインサイトデータを取得する方法を説明します。
- スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」をクリックします。 - コードを記述する
以下のサンプルコードを貼り付けます。ページ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);
}
} - トリガーを設定する
スクリプトエディタの左メニューから「トリガー」をクリックし、「トリガーを追加」を選択します。関数を「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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
