GoogleスプレッドシートでOneDriveのファイルを管理したいと考えたことはありませんか。普段はGoogleドライブを使っていても、業務でOneDriveを併用している方は多いです。この記事では、Microsoft Graph APIを使ってGoogleスプレッドシートからOneDrive上のファイル情報を取得する方法を解説します。APIの呼び出しからデータのシート出力までを詳しく説明しますので、連携の実装に役立ててください。
【要点】OneDriveファイルをスプレッドシートで管理する3ステップ
- Microsoft Entra IDでのアプリ登録: Graph APIにアクセスするための認証情報(クライアントID、テナントID)を取得します。
- Apps ScriptでのOAuth2認証: スプレッドシートからAPIを呼び出すためのアクセストークンを発行します。
- Graph APIエンドポイントへのリクエスト: ファイル一覧やメタデータを取得し、結果をシートに書き込みます。
ADVERTISEMENT
目次
Microsoft Graph APIとGoogleスプレッドシート連携の仕組み
Microsoft Graph APIは、Microsoft 365のデータにアクセスするためのRESTful APIです。OneDriveのファイル一覧、メタデータ、ダウンロードURLなどを取得できます。GoogleスプレッドシートからはApps Script(GoogleのサーバーサイドJavaScript)を使ってHTTPリクエストを送信します。ただし、Graph APIはOAuth2.0認証が必要です。そのため、事前にMicrosoft Entra ID(旧Azure Active Directory)でアプリケーションを登録し、クライアントIDとテナントIDを入手します。Apps Script上でOAuth2ライブラリを使い、アクセストークンを取得してからAPIを呼び出す流れです。
OneDriveファイル情報を取得する手順
- Microsoft Entra IDでアプリを登録する
https://portal.azure.com にアクセスし、「アプリの登録」から新しいアプリケーションを作成します。リダイレクトURIとして「https://script.google.com/macros/d/{スクリプトID}/usercallback」を追加します(スクリプトIDは後で確認)。 - APIのアクセス許可を設定する
登録したアプリの「APIのアクセス許可」で「Microsoft Graph」→「委任されたアクセス許可」を選択し、「Files.Read.All」または「Files.Read」を追加します。管理者の同意が必要な場合は、テナント管理者に依頼します。 - クライアントIDとテナントIDをメモする
アプリの「概要」画面に表示される「アプリケーション(クライアント)ID」と「ディレクトリ(テナント)ID」を控えます。また、クライアントシークレットも作成し、値を安全に保存します。 - Apps Scriptプロジェクトを作成する
Googleスプレッドシートを開き、「拡張機能」→「Apps Script」でプロジェクトを作成します。プロジェクト名は「OneDrive連携」などにします。 - OAuth2ライブラリを追加する
Apps Scriptのエディタで「ライブラリ」を開き、ライブラリID「1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMORSV2mTgE2k5f5fY」を追加します(バージョンは最新)。 - 認証用のコードを記述する
以下のコードをスクリプトに追加します。CLIENT_ID、CLIENT_SECRET、TENANT_IDは実際の値に置き換えます。 - ファイル一覧を取得する関数を作成する
アクセストークンを使ってGraph APIのエンドポイント「/me/drive/root/children」にGETリクエストを送信し、JSONを解析してシートに書き込みます。
具体的なコード例は以下の通りです。最初に認証を設定し、その後でファイルの一覧を取得します。
function getOneDriveFiles() {
var service = getService_();
if (service.hasAccess()) {
var url = 'https://graph.microsoft.com/v1.0/me/drive/root/children';
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + service.getAccessToken()
}
});
var files = JSON.parse(response.getContentText()).value;
var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
sheet.appendRow(['名前', 'サイズ', '更新日時', 'ID']);
files.forEach(function(file) {
sheet.appendRow([file.name, file.size, file.lastModifiedDateTime, file.id]);
});
} else {
Logger.log('認証が必要です: ' + service.getLastError());
}
}
注意点とよくあるトラブル
アクセストークンの有効期限切れ
OAuth2で取得したアクセストークンは通常1時間で失効します。そのため、APIを呼び出すたびに認証を確認し、必要に応じてリフレッシュトークンを使って再取得する仕組みが必要です。Apps ScriptのOAuth2ライブラリは自動的にリフレッシュトークンを管理してくれますが、初回認証後にトークンが保存されるよう、スクリプトのプロパティに保存する設定を行います。
APIのレート制限
Microsoft Graph APIには1分あたりのリクエスト数に制限があります。大量のファイルを取得する場合は、複数回に分けてリクエストする必要があります。また、ページネーション(nextLink)に対応するコードを書くことで、全ファイルを取得できます。
アクセス許可スコープの不足
Files.Read.Allを指定しても、個人のOneDriveしかアクセスできない場合があります。組織のSharePointやグループドライブにアクセスするには、別のスコープ(Sites.Read.Allなど)が必要です。また、管理者の同意が必要なスコープもあるので注意してください。
ADVERTISEMENT
Graph APIと直接URLアクセスの比較
| 項目 | Microsoft Graph API | 直接URLアクセス |
|---|---|---|
| 認証方式 | OAuth2、アクセストークンが必要 | 共有リンクのURLのみでアクセス可能 |
| 取得できる情報 | ファイル名、サイズ、更新日時、メタデータ、ダウンロードURLなど豊富 | 単一ファイルの表示・ダウンロードのみ |
| 一覧取得 | フォルダ内のファイル一覧を取得可能(ページネーション対応) | 基本的に不可能 |
| セキュリティ | アプリの許可とユーザーの同意が必要、安全 | リンクを知っていれば誰でもアクセス可能 |
| 実装の容易さ | アプリ登録やトークン管理が必要でやや複雑 | URLの取得と発行だけで簡単 |
まとめ
Microsoft Graph APIを利用することで、GoogleスプレッドシートからOneDriveのファイル情報を柔軟に取得できるようになります。アプリの登録とOAuth2認証の設定は少し手間ですが、一度実装すれば定期的にファイル一覧を更新することも可能です。次のステップとして、取得したファイルのダウンロードURLを使ってシート内にリンクを埋め込む、ファイルのアップロードや削除を行う関数を追加するなどの応用も考えられます。ぜひ実際にコードを試して、OneDriveとGoogleスプレッドシートの連携を活用してください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
