質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

2117閲覧

HTMLのフォーム送信データをGASでスプレッドシートに取り込みたい!

TomoG3

総合スコア1

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2020/07/10 04:26

編集2020/07/12 01:53

前提・実現したいこと

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 <!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <h1>doPostによる方法</h1> <form method="post" action="https://script.google.com/macros/s/AKfycbwvNsTpF5-yq9IH6_kFutV_JjUAU1-uojNZghC-CfW4x9lov389/exec"> 氏名:<input type="text" name="name"><br> 性別: <input type="radio" name="gender" value="男性">男性 <input type="radio" name="gender" value="女性">女性<br> 好きな動物: <input type="checkbox" name="animal" value="犬">いぬ <input type="checkbox" name="animal" value="猫">ねこ <input type="checkbox" name="animal" value="うさぎ">うさぎ<br> <input type="submit" value="送信する"> </form> </body> </html> result.html <!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> 送信が完了しました。<br><br> <a href="https://script.google.com/macros/s/AKfycbwvNsTpF5-yq9IH6_kFutV_JjUAU1-uojNZghC-CfW4x9lov389/exec">もう一度回答する</a> </body> </html> ```ここに言語名を入力 ソースコード

試したこと

このエラーメッセージは見に行っている先のファイルに問題がある(parameter を認識できない)というようなことを書かれているサイトがあったのですが、
index.htmlのどこをいじっても解決できません。

メールフォーム自体は生成されるのでテスト送信してみたのですが、当然スプレッドシートには何も表示されません。

本来なら上述のサイトで質問すべきですがどうも質問できないようなのでこちらでお尋ねします。

当方素人なのでお手上げです。、
どなたか解決策をご教示願います。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

https://script.google.com/home
ここからスクリプト作ってやれば動きますよ。

以下の意味を知りたいんですか?

GAS

1var sh=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

https://docs.google.com/spreadsheets/d/10iP5jXSHMMU3RBv-Snl8whxksgaRx4zP1SC2oXD6GtU/edit#gid=0
回答は上記のスプレッドシートの最下行に保存されますよ。

自分のスプレッドシートを指定する場合は

GAS

1var sh = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("スプレッドシートのシート名");

完全自分のスクリプトにする場合は上記スプレッド指定とあわせて
index.html内の

GAS

1https://script.google.com/macros/s/AKfycbwvNsTpF5-yq9IH6_kFutV_JjUAU1-uojNZghC-CfW4x9lov389/exec

の部分を自分のスクリプトに編集すれば動くんじゃないでしょうか。

投稿2020/07/12 12:47

MasakiTM

総合スコア115

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TomoG3

2020/07/12 22:10

できました! コード.gsで >自分のスプレッドシートを指定 と、 index.htmlの <form method="post" action= で >自分のスクリプトに編集 で、できました。 ちなみに、 >自分のスプレッドシートを指定 をサンプル通りに戻してやってみてもできました。 すっきりしました。どうもありがとうございました。
guest

0

上記ソースコードコピーしてテストしましたが
エラーはなく
提示されているURLのスプレッドシートに保存されました。

投稿2020/07/11 17:33

MasakiTM

総合スコア115

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TomoG3

2020/07/12 01:32

ご回答ありがとうございます。 そうなんですか・・・ 今、ワタシも上のソースコードをコピーしてやってみましたがやはりスプレッドシートには何も表示されません。 関数を実行してみるとはやり同じエラーが表示されます。 ひとつ質問ですが、 >提示されているURL というのは、 https://script.google.com/macros/s/AKfycbwvNsTpF5-yq9IH6_kFutV_JjUAU1-uojNZghC-CfW4x9lov389/exec のことですよね。 ここのスプレッドシートとはどういうことなのでしょうか。 最初にGoogleDriveで作成したスプレッドシートのことでしょうか。 だとすると何も表示されないのですが・・・ 素人なので基本的なことがわかってないのかも知れずトンチンカンな質問かも知れませんが、 ご教示いただければありがたいです。 (ちなみに、ワタシがやった手順を詳しく上記に追記しておきます。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問