【GAS】doPostをテストするための関数を作成する。【kintone】

当サイトではアフィリエイト広告を利用して商品を紹介しています。

doPostのテストはめんどくさい

kintoneなどのWEBHOOKからGASで受け取ってデータを処理するコードを作成しています。

しかし、テストのためにいちいちkintoneを開いてデータを登録して・・・というのはめんどくさいです。

なので、テストの時には一度受け取ったデータをJSON化したものを、使いまわしてテストを行いたいと思いました。

実際にWEBHOOKから受け取ったデータ(eventData)のpostDataがBlobなのでgetDataAsStringしてJSONに変換しているのですが、テストのデータも本番と合わせてBlobとして扱いたいがBlobに変換ってできるのかな?
と思い調べたところ下記のコードが完成しました。

コード

/**
 * doPost関数に擬似的にパラメータを送って動作テストをする関数
 */
function testDoPost() {
  //投げたいデータを設定
  const eventData = {
    postData: {
      contents: ({/****POSTされるJSON*****/}),
    }
  };
  eventData.postData = Utilities.newBlob(JSON.stringify(eventData.postData));
  doPost(eventData);
}


/**
 * doPost関数本体
 * @param {object} eventData - ポストされたデータWebHookなどを受け取れます。
 */
function doPost(eventData) {

  const data = JSON.parse(eventData.postData.getDataAsString());
  console.log(data);

  return 
}

ハマったポイント

Java Scripctでは new Blob というクラスが用意されているのですがGASではこちらは使えません。

その代わりに Utilities.newBlob を使ってBlobを作成するのがポイントでした。

参考

Utilities.newBlob

https://developers.google.com/apps-script/reference/utilities/utilities#newblobdata

Blob

https://developer.mozilla.org/ja/docs/Web/API/Blob