Google Apps ScriptのdoPost()へデバッグ用にJSONを渡す方法

システム開発
WebAPIで簡単にデータを蓄積できるところがGoogle Spreadsheetの超便利なところです。

スクリプトのデバッグをしていると、POSTを他のサーバから発行しないといけなくて面倒と思うことがあります。コード書く毎にデプロイしないといけないためです。

そこで、単体テスト用に関数を作って、その中でdoPost(e)を呼び出します。

Google Apps Script(GAS)でJOSONデータを受け取る場合は、

function doPost(e) {
  var params = JSON.parse(e.postData.getDataAsString());
}

ですが、これをローカルでデバッグする際のJSONデータの作成方法です。

ポイント

  • GASのPOSTは特殊(parameterにデータは無い)
  • データは、parameterのpostDataに入れておく。
  • 入れておくデータはBlob形式

参考:https://qiita.com/shirakiya/items/db22de49f00710478cfc

なので、こういった形で作成

// デバッグ用の関数
function doPostTest() {
  //eの作成
  var e = {
    postData : Utilities.newBlob('この中にJSONデータを入れる')
  };
  //呼び出す。
  doPost(e);
}

あとは、AppsScriptの上部メニューで作ったDebug関数を指定して、デバッグを押下する。

ブレークポイントも有効なので、ゆっくりとデバッグできます。

SigFox BackendからのCallback呼び出しで、デバッグが面倒だったので、こういった形でデバッグしました。

SigFoxからダイレクトにGoogle Spreadsheetにほぼリアルタイムで受信データが送信できるので安価にシステム構築できるのは便利ですね。ただ、SigFoxの送信メッセージ上限(40回/日)は厳しいなぁ。

5分おきでデータが欲しい場合は採用できないのが難点。

タイトルとURLをコピーしました