2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

glitchからGASにpost通信する

Posted at

初書:2020/12/27

前書き

GlitchからGoogle App Script(GAS)にPOST通信をしたかったので、その時のメモ。
ちなみに、今回はGlitchを使用しているのでGlitchと書いているが、内部はnode.jsなので、実質node.jsとGASのpost通信と言っても過言ではない(ハズ)

glitch側

内部がnode.jsのため、普通のXMLHttpRequestやajaxは使用できない1

そのため、今回はaxiosというのを使用してみる

ちなみにgoogle検索をかけると、requestというのもあるが、どうやら既に非推奨らしい。

インストール

glitchではpackage.jsonに書き足すだけでいいので、単純にpackage.jsonの"dependencies"の欄に"axios": "^0.21.0"を書く。

post通信

では実際に通信していく。今回はjsonを使用してデータのやり取りを行うことにする。

const axiosBase = require("axios"); // どこかに書いておく。
const url = "/macros/s/xxxxx/exec"; // gasのドメイン以降のurl
const data = {"key" : "value"}; // 送信するデータ


const axios = axiosBase.create({
    baseURL: "https://script.google.com", // gas以外の場合はそれぞれ書き換え
    headers: {
        "Content-Type": "application/json",
        "X-Requested-With": "XMLHttpRequest",
    },
    responseType: "json",
});
axios.post(url, data)
    .then(async function (response) {
        const responsedata = response.data; // 受け取ったデータ一覧(object)
    })
    .catch(function (error) {
        console.log("ERROR!! occurred in Backend.");
        console.log(error);
    });

簡単な説明

urlのところはgasから取得できるurlを入れる。
dataは送信するpostデータを入れる。ちなみにconst設定しているが、後に追加するならletとかの方がいいかもしれない

axios.post(url, data)で送信し、thenで受け取る。エラーがあればcatchへ行く。
受け取ったデータはresponseに入るので、ここで自分の好きなようにデータを扱う。

GAS側

GAS側はdoPostで受け取るだけなのだが、通常のe.parameterでは取得できないため、e.postData.contentsを使用する。

function doPost(e) {
  let parameter = {}; // post値を受け取った時
  try{
    parameter = JSON.parse(e.postData.contents);
  }catch(e){
    // エラー処理
  }
  // 通常処理
  const obj = {};
  return ContentService.createTextOutput(JSON.stringify(obj));
}

parameterに受け取ったpost値が入っているので、これを使用して処理する。
そして最後にobjをjsonにして返す。

終わりに

一度書ければあとは使いまわせる簡単なものなので、とりあえずこれを使おうかなと思う。
ちなみにglitch及びGASは両方触りたてなので、もしおかしいところがあれば突っ込んでください。

参考サイト

[axios] axios の導入と簡単な使い方 - Qiita

  1. 厳密には専用のnpmをインストールしたら出来そうではあるが、試してない

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?