この記事をまとめたときにGASのPOST受け取り仕様が複雑だと感じたものの、解説されているサイトが少なかったため、GETと併せてPOSTされたデータを受け取る方法をまとめました。
この記事では以下のステップでコードを解説しています。
GETを受け取る
https://script.google.com/macros/s/{デプロイ ID}/exec/sample?name=test&n=1&n=2
URLからパラメータを取得
全ての変数を文字列として取得
eventParameter.queryStringを使用
function doGet(e){
Logger.log(e.queryString);
}
// 出力: "name=test&n=1&n=2"変数をオブジェクト型で取得し、1つめの値のみ取得
eventParameter.parameterを使用
function doGet(e){
Logger.log(e.parameter);
}
// 出力: { name:"test", n:1 }変数をオブジェクト型で取得し、全ての値を配列として取得
eventParameter.parametesを使用
function doGet(e){
Logger.log(e.parametes);
}
// 出力: { name:["test"], n:[1, 2] }URLからパスを取得
exec/ 以下のパスを取得
eventParameter.pathInfoを使用
function doGet(e){
Logger.log(e.pathInfo);
}
// 出力: "sample"fetchでのリクエストの場合、正常に取得できないことを確認しています
POSTを受け取る
form-data形式でPOSTされた内容を取得
const options = {
method: "POST",
payload: {
name:"test",
n:1
}
}オブジェクト形式で取得
eventParameter.parameterを使用
function doPost(e){
Logger.log(e.parameter);
}
// 出力: { name:"test", n:1 }JSON形式でPOSTされた内容を取得
const options = {
"method": "POST",
"payload": JSON.stringify({
name:"test",
n:1
})
}1つの文字列として取得
eventParameter.postData.contentsを使用
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形式 どちらも配列の処理方法は同じです
const options = {
method: "POST",
payload: {
name:"test",
n:String([1, 2])
}
}function doPost(e){
Logger.log(e.parameter.n.split(','));
}
// 出力: [1, 2]まとめ
GASでGET/POSTの受取データを処理する方法を解説しました。
リクエストパラメータを利用すると出来ることに幅がでますので、ぜひ活用してみてください。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。

コメント