質問: ### 前提・実現したいこと HTMLのメールフォームから送信されたデータを、GASで受け取り、Googleスプレッドシートに書き込んでいきたいのです。 ### 発生している問題・エラーメッセージ いろいろググったところ、こちら↓が一番シンプルだったので、GoogleDriveで新しいスプレッドシートを作り、そこからスクリプト エディタを立ち上げ、全部コピーしてやってみたのですがうまくいきません。 https://productivityresearch.net/programing/116/ <以下、やったことの追記です> 1.GoogleDriveを立ち上げる 2.マイドライブから「Googleスプレッドシート」を選択 3.表示されたスプレッドシートの「ツール」の「スクリプト エディタ」を選択 4.コード.gsの画面で、表示文をすべて削除して上のコード.gsのソースコードをコピペ 5.スクリプト エディタの画面で、「ファイル」「New」「HTMLファイル」を選択 6.名前を「index」として、表示文をすべて削除して上のindex.htmlのソースコードをコピペ 7.再度 5. 8.名前を「result」として、表示文をすべて削除して上のresult.htmlのソースコードをコピペ 9.できた3つのページを保存 10.スクリプト エディタの画面で、「公開」「ウェブ アプリケーションとして導入」を選択 11.更新を選択するとアクセス許可を求めてくるので許可の処置を実行 12.latest codeをクリックして送信フォーム画面を表示 13.入力し送信ボタンをクリック 14. 3.のスプレッドシートを確認。(何も表示されない) 15.スクリプト エディタの画面で、「実行」「関数を実行」「doGet」を選択(無事終了) 16.スクリプト エディタの画面で、「実行」「関数を実行」「doPost」を選択 その結果、(赤いポップアップの中に) TypeError: Cannot read property 'parameters' of undefined(行 14、ファイル「コード」) と表示される。 ``` エラーメッセージ TypeError: Cannot read property 'parameters' of undefined(行 14、ファイル「コード」) というエラーがでます。 ### 該当のソースコード 以下すべてGAS内で記述しています。(上記サイトから丸々コピペです。) コード.gs function doGet() { var toppage=HtmlService.createTemplateFromFile("index"); return toppage.evaluate(); } function doPost(postdata){ var sh=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var time=new Date(); var name=postdata.parameters.name.toString(); // ← ここでエラー! (行 14、ファイル「コード」) var gender=postdata.parameters.gender.toString(); var animal=postdata.parameters.animal.toString(); sh.appendRow([time,name,gender,animal]); var resultpage=HtmlService.createTemplateFromFile("result"); return resultpage.evaluate(); } index.html doPostによる方法 氏名: 性別: 男性 女性 好きな動物: いぬ ねこ うさぎ result.html 送信が完了しました。 もう一度回答する ``` ここに言語名を入力 ソースコード ``` ### 試したこと このエラーメッセージは見に行っている先のファイルに問題がある(parameter を認識できない)というようなことを書かれているサイトがあったのですが、 index.htmlのどこをいじっても解決できません。 メールフォーム自体は生成されるのでテスト送信してみたのですが、当然スプレッドシートには何も表示されません。 本来なら上述のサイトで質問すべきですがどうも質問できないようなのでこちらでお尋ねします。 当方素人なのでお手上げです。、 どなたか解決策をご教示願います。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: https://script.google.com/home ここからスクリプト作ってやれば動きますよ。 以下の意味を知りたいんですか? ``` var sh=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); ``` https://docs.google.com/spreadsheets/d/10iP5jXSHMMU3RBv-Snl8whxksgaRx4zP1SC2oXD6GtU/edit#gid=0 回答は上記のスプレッドシートの最下行に保存されますよ。 自分のスプレッドシートを指定する場合は ``` var sh = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("スプレッドシートのシート名"); ``` 完全自分のスクリプトにする場合は上記スプレッド指定とあわせて index.html内の ``` https://script.google.com/macros/s/AKfycbwvNsTpF5-yq9IH6_kFutV_JjUAU1-uojNZghC-CfW4x9lov389/exec ``` の部分を自分のスクリプトに編集すれば動くんじゃないでしょうか。