この記事はで読むことができます。
はじめに
この記事をまとめたときにGASのPOST受け取り仕様が複雑だと感じたものの、解説されているサイトが少なかったため、GETと併せてPOSTされたデータを受け取る方法をまとめました。
この記事では以下のステップでコードを解説しています。
1. GET
URLからパラメータを取得
全ての変数を文字列として取得
eventParameter.queryString
を使用
gas
function doGet(e){
Logger.log(e.queryString);
}
// 出力: "name=test&n=1&n=2"
変数をオブジェクト型で取得し、1つめの値のみ取得
eventParameter.parameter
を使用
gas
function doGet(e){
Logger.log(e.parameter);
}
// 出力: { name:"test", n:1 }
変数をオブジェクト型で取得し、全ての値を配列として取得
eventParameter.parametes
を使用
gas
function doGet(e){
Logger.log(e.parametes);
}
// 出力: { name:["test"], n:[1, 2] }
URLからパスを取得
exec/ 以下のパスを取得
eventParameter.pathInfo
を使用
gas
function doGet(e){
Logger.log(e.pathInfo
);
}
// 出力: "sample"
fetchでのリクエストの場合、正常に取得できないことを確認しています
2. POST
form-data形式でPOSTされた内容を取得
オブジェクト形式で取得
eventParameter.parameter
を使用
gas
function doPost(e){
Logger.log(e.parameter
);
}
// 出力: { name:"test", n:1 }
JSON形式でPOSTされた内容を取得
1つの文字列として取得
eventParameter.postData.contents
を使用
gas
function doPost(e){
Logger.log(e.postData.contents
);
Logger.log(JSON.parse(e.postData.contents)
);
}
// 出力: "{"name":"test","n":"1"}"
// 出力: { name:"test", n:1 }
【番外編】
配列をデータに含めてPOSTする場合
POST前にString()
で配列を文字列に変換し、POST後にarray.split(',')
で配列に戻す
form-data形式 / JSON形式 どちらも配列の処理方法は同じです
gas
function doPost(e){
Logger.log(e.parameter
.n.split(','));
}
// 出力: [1, 2]
まとめ
GASでGET/POSTの受取データを処理する方法を解説しました。
リクエストパラメータを利用すると出来ることに幅がでますので、ぜひ活用してみてください。