はじめに

Unityなんかでゲーム制作をしていると、スコアランキングなんかを作りたい時があります。 ふつうはMySQLなんかのDBを使って書くといいと思います。しかしサーバーの維持費がかかったりします。そんな時は、Google Spreadsheetを使って節約しましょう

Google スプレッドシート

最近は、オフィスソフトウェアもオンラインで動くものが増えてきて、Googleスプレッドシートも、いわゆる、ウェブ上で動作する表計算ソフトウェアです。 簡単にファイルを共有でき、Googleドライブなんかに保存されるので、個人でのファイル管理に割く手間を省いてくれます。

表計算ソフトということで、マクロ機能が付いています。 さらに、このマクロを、ウェブアプリケーションとして公開という機能があります。 この機能を使うと、GETとPOSTを受け取ることができます。

余談ですが、Google Formなんかもウェブアプリケーションの類でしょうか、最近使う人がとても増えてきましたね。自分で書かずとも、簡単にウェブフォームを作ることができるので、とても便利ですね。その結果をGoogleスプレッドシートで見れてとても良いですね。

マクロ

適当にスプレッドシートを作成した後、ツール>スクリプトエディタと開きます。

ここで、Google Apps Script=マクロの言語を自由に記述できます。 このGoogle Apps Scriptとかいうやつは、だいたいのグーグルサービス共通で、様々なサービスのAPIが使えます。よい!無料部分でだいたいなんでもできます。めっちゃ便利 詳しくは解説しないので、ここらへん とか読んでください。

その中で、doPostとdoGetという関数名にすると、HTMLのPOSTとかGETとかを受け取れる。参考

スクリプトエディタに、次のように追加します

1
2
3
4
function doGet(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  sheet.getRange("A1").setValue('HelloWorld');
}

適当にデバッグボタンを押して実行します。(デバッグボタンの横にある関数一覧をdoGetにしておきましょう)初回実行の際は、なんか、スプレッドシートにアクセスの許可が必要です、なんたらかんたら~って出るので、適当に許可しましょう。

A1セルに、“HelloWorld"と表示されましたか? でたら成功です。

まだまだこれでは普通ですね。スプレッドシートに戻ってA1セルを消しておきましょう。

URLでアクセスできるようにする

メニューから、公開>ウェブアプリケーションとして導入を押します。 そしたら、なんか出るので、アプリケーションにアクセスできるユーザーを「全員(匿名も含む)」に変えて導入を押します。

Spreadhsheetの操作している画像
Spreadhsheetの操作している画像

でてきたURLをコピーして、別のタブで開いてみると……何も起きませんね。(一見では でも、スプレッドシートに戻ってみると、“HelloWorld"とあるはずです。あら便利。

パラメータを受け取って、結果を返してみる

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function doGet(e) { 
  var req = "Dance to Dance"; 
  var response = "failed"; 
  if(!!e && !!e.parameter && !!e.parameter.text) { 
    req = e.parameter.text;
  } 
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]
  var ary = sheet.getRange("A1:A10").getValues();
  for(var i = 0; i < ary.length; i++) {
    if(ary[i][0] == "") {
      sheet.getRange("A" + (i + 1)).setValue(req);
      response = "success";
      break;
    }
  }
  return ContentService.createTextOutput(encodeURIComponent(response)).setMimeType(ContentService.MimeType.TEXT);
}

先ほどと同じように、URLも発行します。(保存しなおす度にURLを再発行する必要があります)

そのURLの最後に……

https://script.google.com/macros/(……中略……)/exec?text=yeah

GET送信のパラメータを付け加えてアクセスすると…… success, failedなんか出たりします。 ここで、スプレッドシートに戻ってみると……

はい、yeahというのがA1かA2セルにあるかと思います。 やばい、もうめっちゃDBじゃん。

あとは、リファレンスを読むなり、VBAができるならそれっぽい要領で上手くできると思います。

かといって、私は、このDBをゲームのスコア管理ぐらいにしか使っていませんが……!よいライフを