Google Apps ScriptはGoogleスプレッドシートなどで使われるスクリプト言語です。JavaScriptに似ていますが、いくつかの制約や書き方の違いがあるため、素のJavaScript SDKは利用できません。そこで非公式ながらGAS用のSDKを開発中です。
これまでデータストアや会員管理(ログインのみ)に対応していましたが、今回ファイルストアへの画像(または任意のファイル)保存に対応しました。
使い方
まずGoogleスプレッドシートなどでスクリプトエディタを立ち上げて、HTMLファイルを追加します。例えば内容は次のようにします。
<!DOCTYPE html> <html> <head> <base target="_top"> <script> function preventFormSubmit() { var forms = document.querySelectorAll('form'); for (var i = 0; i < forms.length; i++) { forms[i].addEventListener('submit', function(event) { event.preventDefault(); }); } } window.addEventListener('load', preventFormSubmit); function readFile(formObject) { google.script.run.upload(formObject); } </script> </head> <body> <form id="myForm" onsubmit="readFile(this)" enctype="multipart/form-data"> <input name="myFile" type="file" /><br> <button type="submit">読込</button> </form> </body> </html>
このファイルを dialog.html として保存します。
モーダルウィンドウを開く
まず関数を実行してモーダルウィンドウを開きます。
function main() { var html = HtmlService.createTemplateFromFile("dialog"); SpreadsheetApp.getUi().showModalDialog(html.evaluate(), 'ローカルファイル読込'); }
これでモーダルウィンドウが開きます。このイベントはボタンなどを配置して実行すれば良いでしょう。
ファイルを受け取る
そしてファイルを指定すると、 google.script.run.upload(formObject);
としてある通り、upload関数が実行されます。この関数名は任意です。
受け取ったファイルオブジェクトをGAS用NCMB SDKでアップロードします。
function upload(formObject) { var fileBlob = formObject.myFile; var application_key = "YOUR_APPLICATION_KEY"; var client_key = "YOUR_CLIENT_KEY"; var ncmb = NCMB.init(application_key, client_key); var res = ncmb.File.upload(fileBlob.name, fileBlob); Logger.log(res); }
これで写真に限らず、ローカルのファイルをGoogle Apps Script経由でアップロードできます。
まとめ
データのメンテナンスとファイルアップロードができるようになれば、Google Apps Scriptを管理画面代わりにアプリのデータメンテナンスが実現できます。フィルタリングやデータの並べ替えなどはmBaaSの管理画面だけでは難しいので、Googleスプレッドシートと組み合わせると便利です。