GASでメッセージの受け取り
Q&A
Closed
GASでメッセージを受け取れるようにしたい
Webでお問い合わせフォームを作りたいと思っているのですが、PHPが実行できるサーバーを用意できません。
(今は input だけどあとで textarea に変えます)
ページはGitHubPagesで公開しようと思っているのですが、サーバーサイド言語は使用できないとのこと。
そこで、GASとGoogleSpreadsheetで受け皿を作ったのですがエラーで動きません。
方法は後述しますが、URLに直接指定した場合は問題なく動きました。ページ内から送るとエラーが出ます。
作り方はこれを参考にしました。
ラムダ技術部 さん
https://youtu.be/hIrxZv1CLxk
発生している問題・エラー
FireFox コンソールより
クロスオリジン要求をブロックしました: 同一生成元ポリシーにより、https://script.google.com/macros/s/AKfycbyZuGcIYLr2krajDEETEirS47iMxk1W3dJKSzAmZ2EpQLKdk7ZfD1e0JLkDMaQnOaih/exec?q= にあるリモートリソースの読み込みは拒否されます (理由: CORS ヘッダー ‘Access-Control-Allow-Origin’ が足りない)。ステータスコード: 302
クロスオリジン要求をブロックしました: 同一生成元ポリシーにより、https://script.google.com/macros/s/AKfycbyZuGcIYLr2krajDEETEirS47iMxk1W3dJKSzAmZ2EpQLKdk7ZfD1e0JLkDMaQnOaih/exec?q= にあるリモートリソースの読み込みは拒否されます (理由: CORS 要求が成功しなかった)。ステータスコード: (null)
Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.
該当するソースコード
function doGet(e) {
const spreadSheetByActive = SpreadsheetApp.getActive();
const sheet = spreadSheetByActive.getActiveSheet();
sheet.appendRow([e.parameter.q]);
const output = ContentService.createTextOutput();
output.setMimeType (ContentService.MimeType.JSON);
output.setContent(e. parameter.q);
return output;
}
<!DOCTYPE html>
<html lang="ja" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<input class="gFLyf" type="text" name="" value="" onkeydown="fetch('https://script.google.com/macros/s/AKfycbyZuGcIYLr2krajDEETEirS47iMxk1W3dJKSzAmZ2EpQLKdk7ZfD1e0JLkDMaQnOaih/exec?q=' + document.querySelector('.gFLyf').value)">
</body>
</html>
自分で試したこと
クラスがあっているか確認した。
PHPなしで使えるフォームサービスというのがあるみたいだが使いたくない。