Chrome Extensionの開発中に
Google Apps Scriptへデータを渡したくなって書いたコードです。
XMLHttpRequestを使おうと思いましたが、
Fetch APIでもできそうなのでFetch を使うを参考にしました。
- コード.gsはGoogle Apps Scriptのスクリプトエディタに書くコードです
- 外部ファイル.jsは、Chrome Extensionの場合background.jsに書いたコードです
dataの中身はcreate_file(data)でGoogleドライブにJSONファイルを作成して確認しています。
POSTデータを受け取る側
コード.gs
function doPost(e) {
var json = e.postData.contents;
create_file(json);
}
function create_file(data) {
var content_type = "application/json";
var file_name = "FILE_NAME";
var blob = Utilities.newBlob("", content_type, file_name);
var file = blob.setDataFromString(data, "UTF-8");
var folder = DriveApp.getFolderById("FOLDER_ID");
folder.createFile(file);
}
|
POSTデータを送る側
外部ファイル.js <!DOCTYPE html>
<html>
<body>
<button id="post">post</button>
<script>
document.getElementById("post").onclick = sendJson;
function sendJson(data) {
var url = "https://script.google.com/macros/s/ID/exec";
var data = {message: "hello"};
fetch(url, {
method: "POST",
body: JSON.stringify(data),
mode: "no-cors",
headers:{
"Content-Type": "application/json"
}
})
.then(response => console.log("Success:", response))
.catch(error => console.error("Error:", error));
}
</script>
</body>
</html>
|
参考