#状況
アンケートWEBアプリを構築中です。
クライアントアプリは完成しサーバー側の機能を実装しております。
ただ、負荷軽減や安定性、あとのデータの利用しやすさのため、googleスプレッドシートにデータを保存(自作のWEBサーバーで処理させない)ことにしました。
クライアントから$.postでスプレッドシートを更新するGAS(WEBサーバー)にjsonを送る実装です。
#困っていること
テストで数回は問題なかったのですが、途中でNo Access-Control-Allow-Originエラーが発生し回避方法がわからずに困ってます。
GASのレスポンスヘッダーにAccess-Control-Allow-Origin:"*"を設定できればおそらくうまくいくと思いますが、ググってもやり方がわからず(そもそもできない?)に困っております。
1function doPost(e) { 2 var timestamp = e.parameters.timestamp; 3 var content = e.parameters.content; 4 var params = JSON.parse(e.postData.getDataAsString()); 5 6 var spreadsheet = SpreadsheetApp.openById('XXXXXXXXXXXXXXXXXXXX'); 7 var sheet = spreadsheet.getSheetByName('saveDataSheet'); 8 sheet.getRange("A1").setValue(params); 9 10 // レスポンス 11 var response = { 12 'data': {'timestamp': timestamp, 'content':content}, 13 'header': {"Access-Control-Allow-Origin":"*"}, 14 'response': 'sccess' 15 }; 16 return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.JSON); 17}
クライアントは下記になります。
javascript
1: 2var json = JSON.stringify(data); 3$.post("https://script.google.com/macros/s/YYYYYYYYYYYYYYYYYYY/exec", json); 4:
chrome上で発生するエラーは下記のとおりです。
❌がエラー、⚠がアラートです。
error
1❌Access to XMLHttpRequest at 'https://script.google.com/macros/s/YYYYYYYYYYYYYYYYYYY/exec' from origin 'http://XXX.XXX.XXX.XXX' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. 2⚠▼jquery.min.js:4 Cross-Origin Read Blocking (CORB) blocked cross-origin response https://script.google.com/macros/s/YYYYYYYYYYYYYYYYYYY/exec with MIME type text/html. See https://www.chromestatus.com/feature/5629709824032768 for more details. 3 send @ jquery.min.js:4 4 ajax @ jquery.min.js:4 5 n.(anonymous function) @ jquery.min.js:4 6 submit @ main.js:418 7 (anonymous) @ main.js:482 8 dispatch @ jquery.min.js:3 9 r.handle @ jquery.min.js:3
#どうしたいか
クライアントからのGASアプリにアクセスができないなら、一旦自作のWEBサーバーを経由させる方法、あるいは直接googleスプレッドシートを更新する方法など良いやり方があればご教授いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。