ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

Google Apps Script用SDKが画像アップロードに対応しました

f:id:mbaasdevrel:20190222161342p:plain

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 として保存します。

f:id:mbaasdevrel:20190222164643p:plain

モーダルウィンドウを開く

まず関数を実行してモーダルウィンドウを開きます。

function main() {
  var html = HtmlService.createTemplateFromFile("dialog");
  SpreadsheetApp.getUi().showModalDialog(html.evaluate(), 'ローカルファイル読込');
}

これでモーダルウィンドウが開きます。このイベントはボタンなどを配置して実行すれば良いでしょう。

f:id:mbaasdevrel:20190222164705p:plain

ファイルを受け取る

そしてファイルを指定すると、 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スプレッドシートと組み合わせると便利です。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。