Apps Script公式リファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2020年6月21日日曜日

Fetch APIでGASのアプリにデータを渡したい


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>



参考

Latest post

Google Apps Scriptの障害時はIssueTrackerを見てみる - Incidents for Apps Script are reported on Issue Tracker

IssueTracker > Apps Script issues https://issuetracker.google.com/savedsearches/566234 Google Apps Scriptの障害時は IssueTracker に課題が上がっていることが...