mBaaSのファイルストアを使えばアプリで利用するリソース(画像や音楽、その他ファイル)を保存しておけます。多くの場合、管理画面を使ってアップロードを行うと思います。
しかしファイルが大量にある場合、管理画面で一つずつアップロードするのは不便です。そこでGoogle Apps Script用のSDKを使って、Google Driveの特定フォルダにあるファイルを一括アップロードしてみます。
GAS用SDKの利用について
GAS用SDKは 1yWnb7GfYsBCR-MZvi6r-TOYv_y-AV4le5P7kaG5B3iZ5VNnSk9Q55pSJ
で公開しています。最新版を使うようにしてください。なお、こちらのライブラリは v8 に対応していませんのでご注意ください。
GAS用SDKの初期化
mBaaSのアプリケーションキー、クライアントキーを使って初期化します。
var applicationKey = '53e...fff'; var clientKey = '3ba...bbf'; var ncmb = NCMB.init(applicationKey, clientKey);
フォルダの中にある画像を取得する
Google Driveで特定のディレクトリ以下のファイルを取得するには以下のように行います。 DIR_ID
はGoogle DriveのフォルダIDです。 https://drive.google.com/drive/u/0/folders/abcdefg
といったURLである時の abcdefg
がフォルダIDです。
var id_dir = DriveApp.getFolderById('DIR_ID'); var files = id_dir.getFiles(); for(var i = 0; files.hasNext(); i++) { // 一つ一つのファイルに対する処理 }
ファイルをアップロードする
ファイルをファイルストアへアップロードするには、以下のように書きます。ACLを使う場合には ncmb.File.upload
の3つ目の引数で指定してください。
var file = files.next();
ncmb.File.upload(file.getName(), file.getBlob());
全体のコード
全体のコードは以下のようになります。詳細はコメントを参考にしてください。
function update() { // NCMB SDKの初期化 var applicationKey = '53e...fff'; var clientKey = '3ba...bbf'; var ncmb = NCMB.init(applicationKey, clientKey); // Google Driveのファイルを取得 var id_dir = DriveApp.getFolderById('DIR_ID'); var files = id_dir.getFiles(); // ファイルを一つずつ処理 for(var i = 0; files.hasNext(); i++) { // 処理対象のファイルを取得 var file = files.next(); // ファイルストアにアップロード ncmb.File.upload(file.getName(), file.getBlob()); } }
まとめ
Google Driveを経由することで、クラウドストレージを使ってファイルを管理できるようになります。遠隔地のデザイナーと協業したりする際にも簡単です。ぜひGoogle Driveを使っている際には試してみてください。