POSTリクエストを処理したい(doPost)

1function doPost(e) {
2    // JSON形式のリクエストボディを想定
3    const data = JSON.parse(e.postData.contents);
4    const name = data.name || "world";
5    return ContentService.createTextOutput(`Hello, ${name}!`);
6}

doPost関数は、ウェブアプリとして公開したGASがPOSTリクエストを受け取ったときに呼ばれる関数です。 GASのエディターからウェブアプリとしてデプロイすると、 https://script.google.com/macros/s/スクリプトID/exec に対してPOSTリクエストを送れるようになります。

doPost関数は、ひとつのプロジェクトにひとつだけ定義できます。

引数したい(e)

doPost(e)の引数eには、リクエストの情報が入っています。 GETと違い、リクエストボディがe.postDataに入ります。

プロパティ

内容

e.postData.contents

リクエストボディの文字列

e.postData.type

リクエストボディのMIMEタイプ(application/jsonなど)

e.postData.length

リクエストボディのバイト数

e.parameter

クエリの値。同じ名前が複数あるときは最後の値

e.parameters

クエリの値。同じ名前が複数あるときは配列

e.queryString

クエリ文字列そのもの(name=John)

JSON形式でPOSTされたときは、e.postData.contentsをJSON.parseでオブジェクトに変換します。 application/x-www-form-urlencoded形式でPOSTされたときは、GETと同じようにe.parameterから値を取得できます。

MIMEタイプしたい(ContentService)

レスポンスはContentService.createTextOutputで作成します。 デフォルトのMIMEタイプはTEXTなので、テキストを返すだけならsetMimeTypeは不要です。

1// JSON形式で返すときはMIMEタイプを明示する
2return ContentService.createTextOutput(JSON.stringify(data))
3    .setMimeType(ContentService.MimeType.JSON);

リファレンス