2021/12/01

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分おきでデータが欲しい場合は採用できないのが難点。


0 件のコメント:

コメントを投稿

Mac mini 2018 のWi-FiやBluetoothが途切れる場合の対処

Mac mini 2018以降で、Wi-FiやBluetoothが不安定な方向けです。 SEM-ITも例に漏れずBluetoothが非常に不安定で、キーボード利用中に切断されると、文字が入力されたままになるとか、Magic TrackPad2の触感がいきなり無くなって切断される…...