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など)が必要です。また、管理者の同意が必要なスコープもあるので注意してください。
Graph APIと直接URLアクセスの比較
| 項目 | Microsoft Graph API | 直接URLアクセス |
|---|---|---|
| 認証方式 | OAuth2、アクセストークンが必要 | 共有リンクのURLのみでアクセス可能 |
| 取得できる情報 | ファイル名、サイズ、更新日時、メタデータ、ダウンロードURLなど豊富 | 単一ファイルの表示・ダウンロードのみ |
| 一覧取得 | フォルダ内のファイル一覧を取得可能(ページネーション対応) | 基本的に不可能 |
| セキュリティ | アプリの許可とユーザーの同意が必要、安全 | リンクを知っていれば誰でもアクセス可能 |
| 実装の容易さ | アプリ登録やトークン管理が必要でやや複雑 | URLの取得と発行だけで簡単 |
まとめ
Microsoft Graph APIを利用することで、GoogleスプレッドシートからOneDriveのファイル情報を柔軟に取得できるようになります。アプリの登録とOAuth2認証の設定は少し手間ですが、一度実装すれば定期的にファイル一覧を更新することも可能です。次のステップとして、取得したファイルのダウンロードURLを使ってシート内にリンクを埋め込む、ファイルのアップロードや削除を行う関数を追加するなどの応用も考えられます。ぜひ実際にコードを試して、OneDriveとGoogleスプレッドシートの連携を活用してください。
ADVERTISEMENT
超解決 リモートワーク研究班
Microsoft 365の導入・保守を専門とするエンジニアグループ。通信障害やサインイン不具合など、ビジネスインフラのトラブル対応に精通しています。
Google Driveの人気記事ランキング
- 【SharePoint】SharePointで「同期」ボタンが表示されない時の確認手順
- 【PDF】スマホからPCへPDFをケーブル無しで送る!クラウド(Googleドライブ/iCloud)同期の基本
- 【SharePoint】ドキュメントライブラリを開けない時のアクセス許可と保存場所チェック
- 【Googleスプレッドシート】テンプレートギャラリーを使い倒すコツ!業務別の活用例
- 【Googleスプレッドシート】Apps Scriptが動かない・実行されない時のチェックポイント
- 【Googleスプレッドシート】Googleフォームの回答エクスポート!CSVダウンロードの操作
- 【Googleドキュメント】WordファイルをDocs形式に変換!互換性と書式維持
- 【Googleアカウント】会社アカウントと個人アカウントを分けたい時の運用方法
- 【Googleドキュメント】AndroidからWordファイル開く!アプリ選択の指定
- 【OneDrive】OneDriveで同期済みなのにスマホから開けない時に見直す保存場所と同期設定
