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> |
参考