ADVERTISEMENT

【Googleスプレッドシート】Airtableのテーブルをインポート!APIキー経由の取込手順

【Googleスプレッドシート】Airtableのテーブルをインポート!APIキー経由の取込手順
🛡️ 超解決

Airtableで管理しているデータをGoogleスプレッドシートに取り込みたいと思ったことはありませんか。手動でのコピー&ペーストでは更新のたびに手間がかかり、ミスも発生しやすいものです。この記事では、AirtableのAPIキーを利用してテーブルデータをスプレッドシートに直接インポートする方法をご紹介します。API経由なら自動化も可能になり、常に最新のデータをシート上で扱えるようになります。具体的には、Google Apps Scriptを使ってAirtableのREST APIを呼び出す手順を中心に解説します。

【要点】AirtableのAPIキーを使ってテーブルをインポートする3つの手順

  • Airtable APIキーとベースIDを取得する: Airtableのアカウント設定からAPIキーを生成し、APIドキュメントからベースIDを確認します。
  • Google Apps Scriptでインポートコードを作成する: スプレッドシートの拡張機能からスクリプトエディタを開き、UrlFetchAppを使ってAirtableのデータを取得する関数を記述します。
  • スクリプトを実行してシートにデータを書き込む: 作成した関数を実行すると、Airtableのレコードがスプレッドシートのアクティブなシートに展開されます。

ADVERTISEMENT

Airtable APIの基本と必要な準備

AirtableはREST APIを公開しており、APIキーを用いて認証することで、テーブルのデータをJSON形式で取得できます。まず、以下の3つの情報を用意する必要があります。

APIキーの生成方法

Airtableにログインし、アカウント設定画面を開きます。APIセクションで「APIキーを生成」ボタンをクリックしてキーを作成します。生成されたキーは安全な場所に保存してください。このキーはURLのクエリパラメータとして渡すか、HTTPヘッダーにBearerトークンとして指定します。

ベースIDの確認方法

AirtableのAPIドキュメントを開くと、各ベースに固有のIDが割り振られています。ベースのURLにも含まれており、https://airtable.com/appXXXXXXX の「app」から始まる部分がベースIDです。また、テーブル名はベース内のテーブル名そのものを使用します。スペースや特殊文字がある場合はURLエンコードが必要です。

APIリクエストの形式

AirtableのAPIエンドポイントは次の形式です。
https://api.airtable.com/v0/{ベースID}/{テーブル名}
認証にはAPIキーをヘッダーに含めるか、URLパラメータ ?api_key={APIキー} として渡します。Google Apps Scriptではヘッダー方式が推奨されます。

Google Apps ScriptでAirtableテーブルをインポートする手順

ここでは、Google Apps Scriptを使ってAirtableのテーブルデータをスプレッドシートに取り込む具体的な手順を説明します。

ステップ1: スクリプトエディタを開く

  1. スプレッドシートを開く
    任意のGoogleスプレッドシートを開き、メニューから「拡張機能」→「Apps Script」を選択します。
  2. スクリプトエディタが開く
    新しいタブでGoogle Apps Scriptのエディタが表示されます。プロジェクト名は後で変更できます。

ステップ2: スクリプトコードを記述する

  1. スクリプトファイルにコードを追加する
    エディタに以下のコードをコピー&ペーストします。AirtableのAPIキー、ベースID、テーブル名は各自のものに置き換えてください。
  2. コードの内容を理解する
    この関数はUrlFetchAppを使ってAirtableからJSONデータを取得し、アクティブシートにヘッダー行とデータ行を書き込みます。offsetがある場合はループで全件取得します。
function importAirtable() {
  var apiKey = 'YOUR_API_KEY';
  var baseId = 'YOUR_BASE_ID';
  var tableName = 'YOUR_TABLE_NAME';
  var url = 'https://api.airtable.com/v0/' + baseId + '/' + encodeURIComponent(tableName);
  var options = {
    'method': 'get',
    'headers': {'Authorization': 'Bearer ' + apiKey},
    'muteHttpExceptions': true
  };
  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clear();
  // フィールド名をヘッダーとして取得
  var fields = data.records.length > 0 ? Object.keys(data.records[0].fields) : [];
  if (fields.length == 0) return;
  sheet.appendRow(fields);
  // データ行を追加
  data.records.forEach(function(record) {
    var row = fields.map(function(field) {
      return record.fields[field] || '';
    });
    sheet.appendRow(row);
  });
  // offsetがあれば全件取得(簡略化のため省略)
}

注意: 上記のコードはoffset処理を省略しています。テーブルに100件を超えるレコードがある場合は、offsetをループで処理する必要があります。詳細はAirtableのAPIドキュメントを参照してください。

ステップ3: スクリプトを実行する

  1. 関数を選択して実行
    スクリプトエディタのツールバーで関数「importAirtable」を選択し、「実行」ボタンをクリックします。
  2. 権限の確認
    初回実行時には、スプレッドシートへのアクセス許可を求められます。「許可を確認」ボタンをクリックし、自身のGoogleアカウントを選択して許可します。
  3. 結果を確認
    実行完了後、元のスプレッドシートに戻ると、アクティブシートにAirtableのデータがインポートされています。

ステップ4: トリガーを設定して自動更新する

  1. トリガーを追加
    スクリプトエディタの左メニューから「トリガー」アイコンをクリックし、「トリガーを追加」を選択します。
  2. トリガーの条件を設定
    実行する関数を「importAirtable」、イベントのソースを「時間主導型」、時間の間隔を「1時間おき」など好みの頻度に設定します。
  3. 保存して完了
    保存すると、指定した間隔で自動的にデータが更新されるようになります。

インポート時の注意点とよくあるエラー

APIキーの権限不足でエラーが発生する

APIキーに必要な権限が付与されていない場合、401エラーや403エラーが返されます。AirtableのAPIキーはデフォルトで読み取り権限を持ちますが、ワークスペースの設定によっては制限されている可能性があります。また、APIキーをURLパラメータで渡す方法は推奨されず、Authorizationヘッダーを使用してください。

レコード数が多すぎてタイムアウトする

AirtableのAPIは1回のリクエストで最大100件のレコードを返します。100件を超える場合はoffsetパラメータを使ってページングを行う必要があります。また、Google Apps Scriptの実行時間制限(6分)にも注意してください。大量データの場合は複数回に分割するか、絞り込み条件を指定して取得することを検討します。

列の並び順が不定期になってしまう

Airtableのスキーマは変更される可能性があり、フィールドの順序が必ずしも一定ではありません。スクリプトではObject.keys()でフィールド名を取得しているため、フィールドの追加・削除があっても自動的にヘッダーが更新されます。ただし、フィールド名が変わると新しい列として追加されるため、必要に応じてマッピングを固定するロジックを組み込むことも可能です。

APIキーが第三者に漏れるリスク

Apps Scriptのコード内にAPIキーを直接記述するため、スクリプトの共有時には注意が必要です。スクリプトを公開する場合は、プロパティサービスを使ってキーを隠蔽することを推奨します。また、APIキーには読み取り専用のものを使用し、必要以上に権限を与えないようにしてください。

ADVERTISEMENT

IMPORTDATA関数を使った簡易的な代替方法との比較

項目 Google Apps Script方式 IMPORTDATA関数方式
認証方法 Authorizationヘッダーで安全に渡せる URLクエリパラメータにキーが露出する
データ量の制限 ページング処理で全件取得可能 1セルに入る範囲のみ、大量データ不可
自動更新の容易さ タイムトリガーで定期実行可能 自動更新には別途スクリプトが必要
データの整形 スクリプト内で自由に加工可能 JSONのままでは扱いにくく、パースが困難

IMPORTDATA関数は関数一つでデータを取得できる手軽さがありますが、セキュリティ面やデータ量の面でGoogle Apps Script方式に劣ります。本格的な連携にはApps Scriptの利用をおすすめします。

まとめ

今回は、AirtableのAPIキーを使ってテーブルデータをGoogleスプレッドシートにインポートする方法を解説しました。Google Apps Scriptを使うことで、安全かつ柔軟にデータを取得し、定期的な自動更新も設定できます。特に、大量のレコードを扱う場合や、列構成が動的に変わる場合にはスクリプトが威力を発揮します。まずはサンプルコードを参考に、自分のAirtable環境でテストしてみてください。また、応用として、QUERY関数と組み合わせて必要なデータだけを抽出したり、他のAPIと連携したダッシュボードを作成することも可能です。この記事で紹介した手順を活用して、AirtableとGoogleスプレッドシートの連携を効率化してみてはいかがでしょうか。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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