GoogleAppsScript

GoogleAppsScriptをWebAPIとして公開したとき実行制限はあるのか?


これはなにか


  • GoogleAppsScriptはWebAPIとして公開できる便利な機能がある



  • GoogleAppsScript内で使用するAPIには上限があったりするのだがWeb Appsについての記載は特に見つけられない



  • おそらく上限はないのだが、実際に外部公開用のサイトで利用するにあたって勘で使うのはちょっと怖い

  • ということで実験してみた


方法


  • スプレッドシートの中身をシンプルにJSONで返すAPIを想定

  • スプレッドシートの中身はとりあえず30×30くらいにした

  • このAPIに0.5秒おきに1000回RequestしてみてResponseをチェックする


    • 合計30分くらいかかる



  • コードはこんな感じです

function doGet(e){

const res = getData()
return ContentService.createTextOutput(JSON.stringify(res));
}

function getData(){
const id = 'xxxxxxxxxx'
, sheet = SpreadsheetApp.openById(id).getSheetByName(name)
, sheet_data = sheet.getDataRange().getValues()
, keys = sheet_data[0]
, vals = sheet_data.slice(1)
;
var datas = []
, data
;

vals.forEach(function(v){
data = {}
keys.forEach(function(k, i){
data[k] = v[i];
})
datas.push(data);
})

return datas;
}


結果


まず上限はありそうだったか?

30分間で1000回Request送る程度では問題なし


時系列でのResponseTimeの変動

image.png


ResponseTimeのHistgram

image.png

ムラはあるが大体1秒以内でResponseできている


まとめ


  • 大丈夫そう

  • もっとRequest回数を増やしてもやってみたい


    • GoogleにIPで制限されるのはちょっと怖いけど