SQLiteデータベースに蓄積したデータをGoogleスプレッドシートで活用したいと考えたことはありませんか。スプレッドシートはデータ分析や可視化に便利ですが、直接SQLiteに接続することはできません。そこで、JSON形式を介してデータを取り込み、さらにそのデータをREST APIとして提供する方法が有効です。この記事では、Google Apps Scriptを使ってSQLiteの結果をJSON経由で取り込み、スプレッドシートをAPI化する手法を解説します。
【要点】SQLiteのデータをJSON経由でスプレッドシートに取り込み、REST API化する手順
- SQLite→JSON変換: SQLiteのクエリ結果をJSON形式に変換し、URLからアクセス可能にします。
- Google Apps ScriptでJSON取り込み: UrlFetchAppでJSONデータを取得し、スプレッドシートに書き込みます。
- Webアプリとして公開: doGet関数でスプレッドシートデータをJSONで返し、REST APIとして公開します。
ADVERTISEMENT
目次
SQLiteデータをJSON形式で出力する準備
まず、SQLiteデータベースの内容をJSONに変換する方法を説明します。SQLiteからJSONを生成するには、コマンドラインツールやプログラミング言語を使用します。例えば、Pythonのsqlite3モジュールを使ってクエリ結果をJSONに変換できます。変換したJSONファイルは外部からアクセス可能な場所に配置します。WebサーバーやGoogle Cloud Storageなどのクラウドストレージにアップロードし、公開URLを取得してください。このURLが後のインポート手順で使用します。
GoogleスプレッドシートにJSONデータを取り込む2つの方法
JSONデータをスプレッドシートに取り込む方法は2つあります。IMPORTDATA関数は単純ですがJSONには対応していません。一方、Google Apps Scriptを使えば柔軟にJSONを処理できます。ここでは後者を中心に解説します。
IMPORTDATA関数ではJSONを直接インポートできない点に注意
IMPORTDATA関数はCSVやTSV形式のデータしか読み込めません。JSONをそのまま指定するとエラーになります。そのため、JSONを事前にCSVに変換するか、次のApps Scriptを使う方法を選択してください。
Google Apps ScriptでUrlFetchAppを使う方法
Google Apps Scriptを使用すると、外部URLからJSONを取得し、シートに書き込むことができます。手順は以下の通りです。
- スクリプトエディタを開く
Googleスプレッドシートの「拡張機能」メニューから「Apps Script」を選択し、エディタを開きます。 - JSON取得関数を作成する
以下のコードを貼り付けます。function fetchJSON() { var url = ‘https://example.com/data.json’; var response = UrlFetchApp.fetch(url); var json = JSON.parse(response.getContentText()); var sheet = SpreadsheetApp.getActiveSheet(); var data = json.data; for (var i = 0; i < data.length; i++) { sheet.getRange(i+1, 1, 1, data[i].length).setValues([data[i]]); } } - 関数を実行する
スクリプトエディタでfetchJSON関数を選択し、実行ボタンを押します。初回は権限の承認が必要です。承認後、シートにデータが書き込まれます。
上記のコードでは、JSONオブジェクトのdata配列を1行ずつシートに書き込んでいます。JSONの構造に応じて処理を調整してください。また、大量データの場合はループ処理の効率化を検討します。
スプレッドシートデータをREST APIとして公開する手順
スプレッドシートの内容を外部からJSON形式で取得できるREST APIとして公開するには、Google Apps ScriptでWebアプリを作成します。以下の手順に従ってください。
- doGet関数を記述する
先ほどのスクリプトエディタに、以下のコードを追加します。function doGet(e) { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); var json = JSON.stringify(data); return ContentService.createTextOutput(json).setMimeType(ContentService.MimeType.JSON); } - Webアプリとしてデプロイする
スクリプトエディタで「デプロイ」ボタンをクリックし、「新しいデプロイ」を選択します。種類を「ウェブアプリ」に設定し、アクセス権限を「全員(匿名ユーザーを含む)」にします。「デプロイ」を実行するとURLが発行されます。 - 発行されたURLをテストする
ブラウザでそのURLにアクセスすると、シートのデータがJSON形式で表示されます。このURLがREST APIのエンドポイントになります。
注意点として、デプロイのたびに新しいURLが発行されます。バージョン管理を行う場合は、特定のバージョンを固定してください。
ADVERTISEMENT
注意点とよくある失敗
この手法を実践する際に注意すべき点をいくつか挙げます。
CORS制限への対応
Webアプリとして公開したAPIは、異なるオリジンからのアクセス時にCORSエラーが発生することがあります。対策として、doGet関数内でレスポンスヘッダーにAccess-Control-Allow-Originを追加します。ただし、Google Apps Scriptではヘッダー設定が制限されるため、代理サーバーを経由する方法も検討してください。
データ量の制限
UrlFetchAppで取得できるデータサイズは約50MBまでです。また、Webアプリのレスポンスサイズも制限があります。大規模データの場合は分割して複数回のリクエストに分けるか、圧縮を検討します。
権限と公開範囲
スクリプトの実行やWebアプリの利用には適切な権限が必要です。特にWebアプリを全員に公開する場合は、機密データが流出しないよう注意してください。アクセス制限をかけたい場合は、認証機能を追加します。
IMPORTDATAとApps Scriptの比較
JSONデータを取り込む方法を比較します。以下の表を参考にしてください。
| 項目 | IMPORTDATA | Apps Script UrlFetchApp |
|---|---|---|
| 対応形式 | CSV、TSVのみ | JSONを含む任意のテキスト |
| 自動更新 | ファイル更新時に自動更新 | トリガー設定が必要 |
| カスタマイズ性 | 低い | 高い(加工処理が可能) |
| データ制限 | 約2MB | 約50MB |
まとめ
この記事では、SQLiteデータをJSON経由でGoogleスプレッドシートに取り込み、さらにそのデータをREST APIとして公開する方法を解説しました。Google Apps Scriptを使えば、外部URLからJSONを取得してシートに反映できるだけでなく、doGet関数を使ってスプレッドシートを簡単にWeb API化できます。応用として、JSONの構造に合わせたデータ変換や、トリガーによる定期更新を組み合わせることで、より柔軟なデータ連携が実現できます。ぜひ実際のワークフローに組み込んで活用してください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
