MENU

InstagramのCSVを使ってスプレッドシートに自動記録する方法

開発メモ

Instagramの投稿履歴をスプレッドシートで管理したい!
そんな方に向けて、Zapierを使わず、Google Apps Script(GAS)だけで自動記録する方法をご紹介します。

Meta Business SuiteからCSVをエクスポートして、Googleドライブの指定フォルダにアップするだけで、スプレッドシートに自動で追記される仕組みが完成します🌿


目次

はじめに:この記事でできること

  • Instagramの投稿履歴をCSVでダウンロード
  • Googleドライブに保存すると、自動でスプレッドシートに記録
  • タイトル、公開日、URL、投稿タイプなどの情報を整理

最初はZapierを使って自動化できないかを試したんですが、Instagramの仕様上、Facebookページをつくって、そこにもインスタグラム投稿を連携しない限り自動記録ができなかったので、断念。
代案として、CSVをアップロードして連携することにしました。

Step1:前提準備

まずは、以下の準備をしておきましょう。

必要なもの:

  • Instagramのビジネスアカウント
  • Meta Business Suiteで出力したCSV(Instagramのビジネスアカウントがあれば無料で使うことができます)
  • Googleスプレッドシート(投稿ログ用)

スプレッドシートの構成例:

ID媒体投稿タイプタイトル公開日URL
投稿一覧のイメージ
IDに自動で連番をつける

A列(ID)に、以下の式をA2セルに入力しておきましょう。

=ARRAYFORMULA(IF(B2:B<>"", ROW(B2:B)-1, ""))

これで、行が追加されるたびにIDが自動で振られます

Step2:Meta Business SuiteからCSVを出力

Meta Business SuiteからCSVを出力します

csvファイルの列はこのようになっています

投稿IDアカウントIDアカウントユーザーネームアカウント名説明時間(秒)公開時間リンク投稿タイプ

補足:CSVの内容とスプレッドシートの対応

CSVから取り出す項目は次のようになっています。

スプレッドシートの項目InstagramのCSV
投稿タイプ「投稿タイプ」(例:ストーリー、リールなど)
タイトル「説明」
公開日「公開時間」 例:07/07/2025 06:57
URLリンク

スプレッドシートの列と対応させることで、きれいに記録されます。

Step3:CSVを格納するGoogleドライブのフォルダを用意

Meta Business SuiteでダウンロードしたCSVファイルを入れる専用フォルダを作成します。
このフォルダのIDをコピーしておきましょう(URLの「folders/」のあとがIDです)。

Step4:GASスクリプトの設定

次に、Apps Scriptで以下のコードを貼り付けて保存します。

拡張機能>Apps Scriptを選ぶとコードの入力画面がひらきます。

下記2点を修正の上、コードにコピーしてください。

  • folderID : CSVフォルダのID(URLの「folders/」のあとがIDです)
  • sheetに設定するシート名(見本では投稿一覧)
function importLatestInstagramCSV() {
  const folderId = 'XXXX'; // DriveのCSV用フォルダ
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFilesByType(MimeType.CSV);
  
  let latestFile = null;
  let latestDate = 0;

  while (files.hasNext()) {
    const file = files.next();
    const updatedTime = file.getLastUpdated().getTime();
    if (updatedTime > latestDate) {
      latestDate = updatedTime;
      latestFile = file;
    }
  }

  if (!latestFile) {
    Logger.log('CSVファイルが見つかりません');
    return;
  }

  const prop = PropertiesService.getScriptProperties();
  const lastProcessed = Number(prop.getProperty('LAST_CSV_UPDATE')) || 0;

  if (latestDate <= lastProcessed) {
    Logger.log('すでに処理済みのCSVです。スキップします。');
    return;
  }

  // --- CSV処理開始 ---
  const csvData = Utilities.parseCsv(latestFile.getBlob().getDataAsString());
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('投稿一覧'); // シートを指定
  const existingUrls = sheet.getRange(2, 6, sheet.getLastRow() - 1).getValues().flat(); // URL列(F)

  let currentRow = sheet.getLastRow();

  for (let i = 1; i < csvData.length; i++) {
    const row = csvData[i];
    const description = row[4];     // 説明
    const postType = row[8];        // 投稿タイプ
    const publishedAt = row[6];     // 公開時間
    const url = row[7];             // リンク

    if (!url || existingUrls.includes(url)) continue;

    const id = currentRow - 1 + 1;
    const media = 'Instagram';
    const title = description || '';

    sheet.appendRow([id, media, postType, title, publishedAt, url]);
    currentRow++;
  }

  // ✅ 処理完了 → 更新日時を保存
  prop.setProperty('LAST_CSV_UPDATE', latestDate.toString());
  Logger.log('投稿一覧に追記しました(更新日時を記録済)');
}

保存して、メニューの実行を押してみて正しくシートに書き込まれるか確認してみてください。

Step5:トリガーの設定(自動実行)

Apps Scriptのメニュー「トリガー」から、以下のように設定します。

  • 関数名:importLatestCSVToSheet
  • イベントの種類:時間主導型
  • 実行タイミング:5分ごと、もしくは毎時間 など

これで、CSVをアップロードするたびに自動で処理されます


活用例:投稿ログの見える化

この仕組みを使えば:

  • Instagramの投稿を一覧で見られる
  • カレンダーや分析用シートと連携できる
  • YouTubeやブログのログと統合し、コンテンツ分析の元ネタに✨

Zapierのような外部ツールがなくても、GASだけで自動化は可能です。

一度設定しておけば、Instagramの投稿履歴が自動で整理されていきます。
投稿管理が楽になるだけでなく、コンテンツの見える化・分析にも役立ちます

💬 この記事は自分用の記録として残していますが、
もし同じような設定に悩んでいる方がいれば、単発相談(1回 45分 / 10,000円)も受け付けています。
ご自身でチャレンジして難しいと感じたときは、お気軽にどうぞ🌱

  • URLをコピーしました!

この記事を書いた人

元エンジニア・コンサルタント→フリーランスへ。
個人事業主さん向けにWordPress・HP作成の個人レッスンをしています。

目次