Unity から Google Drive を利用したいと思い調べていると NuGet の導入が必要とのことで
個人的に面倒だったので自前で作ってしまえばいいじゃんということで作成しました
対応機能
- SpreadSheet の読み書き
- ディレクトリ一覧の表示
- 画像のロード
公開されていない場合は Google Developers Console より クライアントID
と クライアントシークレット
を発行する必要があります
発行方法に関してはこちらの記事を参考にしてください
※ クライアントID
と クライアントシークレット
は公開しないように注意しましょう
導入
Github
PackageManager
「Add package from git URL」に https://github.com/yayorozu/UnityGoogleDriveHelper.git
をAddしてください
サンプル
3つのサンプルが同封されているので各サンプル
公開 Spread Sheet へのアクセス
Tools/GoogleDriveSample/ShaderSpreadSheet
公開設定のSheet のIDとシート名を入力することで、シートの中身を表示します
Sheet の ID は URL を確認することでわかります https://1docs.google.com/spreadsheets/d/{sheet id}
Spread Sheet へのアクセス
Tools/GoogleDriveSample/SpreadSheet
GoogleOAuthClientData
に クライアントID
と クライアントシークレット
を入力した状態で、EditorWindow を開き
「Get OAuth Code」より認証コードを取得して、「Paste OAuth Code from clipboard」をクリックすることでアクセスすることができるようになるので
こちらも同じように Sheet ID を入力して「ロード」を押します
すると Spread Sheet のシート一覧が表示されるので、みたいシートを選択すると中身を表示できます
Google Drive のディレクトリ一覧を取得
Tools/GoogleDriveSample/Folder
上記と同じく設定したのち、この EditorWindow を開くと「GetRoot」と表示される
これを押すとディレクトリ一覧が表示され、フォルダであれば更に中のファイル一覧を確認することができる
使い方
スクリプトを利用して Google Drive へのアクセス方法を記述する
公開されている画像へのアクセス
GoogleDriveFileApi.LoadShareTexture(id, texture => {});
公開SpreadSheetへのアクセス
GoogleSpreadSheetApi.GetSheet(spreadSheetId, sheetName, v => /* string[,] */);
公開SpreadSheet のデータをクラスへキャスト
1行目のカラムと変数名を一致させ自動的にクラスへの変換を行う
private class Sample { public int IntValue; } GoogleSpreadSheetApi.GetSheet<Sample>(spreadSheetId, sheetName, v => /* List<Sample> */);
OAuth を使ったアクセス
// ClientId と ClientSecret を登録 var clientData = GoogleOAuthClientData.Load("GoogleAuthData"); var data = new GoogleSpreadSheetOAuthData(clientData); data.SetToken(new EditorOAuthToken(EditorApplication.applicationPath)); // ブラウザを開いて認証コードを取得 data.GetOAuthCode(); // 取得した認証コードを適応してアクセストークンを取得 data.SetOAuthCode(code); data.GetToken(); // Spread Sheet のロード data.LoadSpreadSheet(_spreadSheetId, data => { // SpreadSheet の情報を取得 }); // SpreadSheet のデータをもとにシートをロード data.LoadSheet(_sheetData, sheet, v => { // string[,] });