【GAS】doPostで受け取れる最大文字数を調べてみた

こんにちは、フリーランスエンジニアの太田雅昭です。

GASのdoPost

GASではウェブアプリ化してデータを受け取り、色々と処理できる様になる機能があります。ところが画像を受け取ることができない様で、画像を受け取るにはBase64エンコードしないといけない様です。しかしそうするとデータ量が膨大になりますので、はたしてどこまでできるのかを知るべく検証しました。

検証コード

以下のコードを用いました。

GAS

function doPost(e) {
  addLog(JSON.stringify({
    length: e.postData.length,
  }))
}

function addLog(str) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ログ');
  sheet.appendRow([str]);
}

送信側

const url = ''; // デプロイしたURL
const length = 0; // 検証サイズ

fetch(url, {
  method: 'post',
  mode: 'no-cors',
  body: 'a'.repeat(length),
});

結果

1000*1000*10までは送信できることが確認できました。1000*1000*100だと413エラーでした。

このことから、10M文字数までは送信できる様です。Base64エンコードすると133%になるそうですので、画像だと7.5MBほどでしょうか。思ったより少ないですね。

余談

最近は暑いので、ペットボトルは質より量です。コーヒーも、なるべく大きいのを買ってます。