ADVERTISEMENT

【Googleスプレッドシート】Boxのファイル一覧を取得!Box APIによる接続

【Googleスプレッドシート】Boxのファイル一覧を取得!Box APIによる接続
🛡️ 超解決

Boxのストレージに保存されたファイルの一覧をGoogleスプレッドシートで管理したいと考えたことはありませんか。Box APIを利用すれば、スプレッドシートから直接ファイルのリストを取得できます。この記事では、Box APIの接続設定から、ファイル一覧をシートに出力するまでの手順を詳しく解説します。

【要点】Box APIでファイル一覧をスプレッドシートに取得する3つのステップ

  • Boxでアプリを作成して認証情報を取得: Box開発者コンソールでアプリを登録し、クライアントIDとシークレットを発行します。
  • Apps ScriptでOAuth2認証を実装: スプレッドシートのスクリプトエディタでOAuth2ライブラリを使い、アクセストークンを取得します。
  • APIリクエストでフォルダ内容を取得してシートに書き込み: Box APIのエンドポイントを呼び出し、ファイル名や更新日時などをシートに出力します。

ADVERTISEMENT

Box APIでファイル一覧を取得する仕組みと準備

Box APIはBoxのクラウドストレージ上のデータにアクセスするためのRESTful APIです。ファイルやフォルダの一覧取得、作成、更新、削除などが行えます。スプレッドシートから利用するには、Boxの開発者アカウントでアプリケーションを作成し、認証情報を取得する必要があります。また、Google Apps Scriptを使ってAPIを呼び出し、結果をシートに反映します。事前にBoxのアカウント(無料でも可)と、API利用のための開発者コンソールへのログインが可能であることを確認してください。

Box APIに接続してファイル一覧を取得する手順

  1. Boxでアプリを作成して認証情報を取得します。
    Box開発者コンソール(https://developer.box.com)にアクセスし、「Create New App」をクリックします。アプリ名を入力し、認証方式として「OAuth 2.0 with JWT」を選択します(サーバー認証向け)。作成後、クライアントIDとクライアントシークレットが表示されます。これらの値を控えておきます。
  2. GoogleスプレッドシートでApps Scriptを開きます。
    ファイル一覧を出力するスプレッドシートを開き、メニューの「拡張機能」→「Apps Script」を選択します。スクリプトエディタが開きます。
  3. OAuth2ライブラリを追加します。
    スクリプトエディタの左側の「ライブラリ」横の「+」をクリックし、ライブラリID「1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF」を追加します。バージョンは最新(例:41)を選択します。これによりOAuth2認証が簡略化できます。
  4. 認証用のスクリプトを記述します。
    コード.gsに以下の関数を追加します。function getBoxService() { return OAuth2.createService(‘box’) .setAuthorizationBaseUrl(‘https://account.box.com/api/oauth2/authorize’) .setTokenUrl(‘https://api.box.com/oauth2/token’) .setClientId(‘YOUR_CLIENT_ID’) .setClientSecret(‘YOUR_CLIENT_SECRET’) .setCallbackFunction(‘authCallback’) .setPropertyStore(PropertiesService.getUserProperties()) .setScope(‘https://api.box.com/scope’) ; } ‘YOUR_CLIENT_ID’と’YOUR_CLIENT_SECRET’は実際の値に置き換えてください。
  5. アクセストークンを取得します。
    別の関数で認証URLを生成します。function showAuthUrl() { var service = getBoxService(); var authUrl = service.getAuthorizationUrl(); Logger.log(authUrl); } この関数を実行し、表示されたURLにブラウザでアクセスして許可します。リダイレクト後にコードが取得され、自動的にトークンが保存されます。
  6. APIを呼び出してフォルダのファイル一覧を取得します。
    function getFileList() { var service = getBoxService(); if (service.hasAccess()) { var response = UrlFetchApp.fetch(‘https://api.box.com/2.0/folders/0/items’, { headers: { Authorization: ‘Bearer ‘ + service.getAccessToken() } }); var data = JSON.parse(response.getContentText()); return data.entries; } else { Logger.log(‘アクセストークンがありません。’); } } フォルダID「0」はルートフォルダを指します。必要に応じて変更してください。
  7. シートにファイル一覧を書き込みます。
    取得したデータをシートに出力する関数を作成します。function writeToSheet() { var files = getFileList(); var sheet = SpreadsheetApp.getActiveSheet(); sheet.clear(); sheet.appendRow([‘ファイル名’, ‘タイプ’, ‘更新日時’]); files.forEach(function(item) { sheet.appendRow([item.name, item.type, item.modified_at]); }); } この関数を実行すると、アクティブなシートにファイル一覧が出力されます。

接続時の注意点とトラブル対処法

アクセストークンの有効期限切れ

Box APIのアクセストークンは通常2時間で失効します。そのため、長時間の処理や定期的な更新が必要な場合は、リフレッシュトークンを使って自動的にトークンを更新する仕組みを組み込んでください。OAuth2ライブラリでは、getAccessToken()メソッドが自動的にリフレッシュを試みます。

APIのレート制限に達する

Box APIには1分あたりのリクエスト数に制限があります(アプリの種類による)。大量のファイルを取得する場合は、ページネーション(1回のリクエストで100件など区切って取得)を利用してください。limitとoffsetパラメータを追加することで実現できます。

フォルダIDの指定ミス

フォルダIDを間違えると存在しないフォルダのエラー(404)が返ります。正しいIDはBoxのWeb UIでフォルダを開いたときのURLから確認できます。また、特定のフォルダを指定せずにルートフォルダ(ID:0)を使うと、ルート直下のアイテムのみ取得されます。

ADVERTISEMENT

Box API以外の方法との比較

方法 特徴 自動化のしやすさ
Box API + Apps Script プログラミングが必要だが、柔軟性が高い 高い(トリガーで定期実行可能)
BoxのCSVエクスポート機能 手動でCSVをダウンロードしてスプレッドシートに取り込む 低い(毎回手動操作)
Zapierなどの連携ツール ノーコードで連携可能だが有料プランが必要 中程度(設定は簡単だがコストがかかる)

まとめ

Box APIとGoogle Apps Scriptを組み合わせることで、スプレッドシート上でBox内のファイル一覧を自動取得できるようになります。この手順を応用すれば、ファイルのアップロード日時によるフィルタリングや、特定の拡張子だけをリストアップすることも可能です。まずはサンプルコードをベースに、自分のBoxフォルダに合わせてカスタマイズしてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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