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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Sendmail

Sendmailは、インターネットで電子メールを送受信するサーバソフトウェア(MTA)です。ユーザーが送信したメールを受け、他メールサーバへ引き渡しバケツリレー式に配送したり、届いたメールをユーザーが受け取るまでの間保管するといった働きをします。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Q&A

1回答

1028閲覧

TypeError: undefined からプロパティ「response」を読み取れません。

c5rkk

総合スコア13

Sendmail

Sendmailは、インターネットで電子メールを送受信するサーバソフトウェア(MTA)です。ユーザーが送信したメールを受け、他メールサーバへ引き渡しバケツリレー式に配送したり、届いたメールをユーザーが受け取るまでの間保管するといった働きをします。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

0グッド

0クリップ

投稿2018/09/19 08:45

編集2018/09/21 07:55

前提・実現したいこと

Googleフォームで、セミナー応募に対する自動返信の雛形を作っています。
実行をしようとした際、以下のエラーコードが出てしまう、かつメールが送信されません。

発生している問題・エラーメッセージ

TypeError: undefined からプロパティ「response」を読み取れません。 と表示されてしまう。

該当のソースコード

Google

1 2function submitForm(formData) { 3 var emailAddress = formData.response.getRespondentEmail(); 4 var questioneeName = ""; 5 6 //set titles of the questions that you want to get answers 7 var questionForName = "名字" 8 var responses = formData.response.getItemResponses(); 9 var message = ''; 10 for (var i = 0; i < responses.length; i++) { 11 var response = responses[i]; 12 var question = response.getItem().getTitle(); 13 var answer = response.getResponse(); 14 message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n'; 15 16 17 if ( question == questionForName) { 18    questioneeName = answer; 19 } 20 } 21 sendEmail(emailAddress, questioneeName) 22} 23 24function sendEmail(emailAddress, questioneeName) { 25 26 var recipient = emailAddress; 27 var subject = "ご応募ありがとうございます"; 28 var body = questioneeName + " 様\n\n" + "こんにちは。\n\n"; 29 30"この度は、【●●●】にご応募いただきありがとうございます。\n"; 31"以下の内容で回答を受け付けました。\n\n"; 32 33+ message; 34 35"\n\nそれではよろしくお願い致します。"; 36 37 38 var options = { name: "●●●運営事務局" }; 39 40 try { 41 MailApp.sendEmail(recipient, subject, body, options); 42 }catch(e){ 43 var admin = "example.gmail.com"; 44 MailApp.sendEmail(admin, "【自動返信失敗】メール送信中にエラーが発生しました", e.message); 45 } 46} 47 48

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

はじめスプレッドシートの方で作っていましたが、フォームの方に変更しました。
ど素人なので、人に聞きつつ見よう見まねで作っております。よろしくお願いいたします。

以下のようなものも試してみましたが、rowやcolumnが働かず?うまくいきませんでした。
var sheet = SpreadsheetApp.getActiveSheet();
var row = sheet.getLastRow();
var column = sheet.getLastColumn();
var range = sheet.getDataRange();
Logger.log("row="+row+" column="+column);

for (var i = 1; i <= column; i++ ) {

//スプレッドシートの入力項目名
var item = range.getCell(1, i).getValue();

//スプレッドシートの入力値
var value = range.getCell(row, i).getValue();

//本文(body)に、フォームの入力項目を追加
body += "■"+item+"\n";

//本文にフォームの入力内容を追加
body += value + "\n\n";

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

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

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

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

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

papinianus

2018/09/19 08:53

「実行をしようとした際、以下のエラーコードが出てしまう」とのことですが、どのように「実行」していますか?具体的に教えてください。
c5rkk

2018/09/19 08:55

ご質問ありがとうございます。「関数を実行」→「submitForm」を選択しています。よろしくお願い致します。
papinianus

2018/09/19 09:09

それではformDataにフォームが指定されません。だってそうでしょう?実行時にフォームの回答を指定していないのに回答値を利用するコードを動かせと言われても機械も困惑します。これをトライするには、実際にトリガーをセットして実際にフォームを送信する必要があります。
c5rkk

2018/09/19 09:25

なるほど、ありがとうございます。ただいますべてのトリガーをセットし、フォームを記入してみたところ、今度は「message」がうまく機能していないようでした。(これでフォームの回答内容を引っ張ってきたいのですが)
papinianus

2018/09/19 09:31

messageが上手く機能していない、はどういう状況でしょうか?なんとなくanswerが変なのかなとは推測しますが具体的にどうおかしいか教えてください
c5rkk

2018/09/20 10:38

返信大変遅くなり申し訳ありません。自分で少しいじってみていたら少しわからなくなってしまいましたので、改めてまた明日回答させてください!よろしくお願い致します。
guest

回答1

0

追記された部分についてコードを書く必要があるので、回答欄にしますが回答ではないです。

javascript

1var sheet = SpreadsheetApp.getActiveSheet().getActiveSheet(); 2var sheet = SpreadsheetApp.openById("id").getActiveSheet();

としないと上手くいかないように思います。

フォーム送信時とスプレッドシートからの送信では話が違ってくると思うのですが、何がやりたくて、何がどうだめかをもうちょっと具体化していただけませんでしょうか?

投稿2018/09/21 08:34

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問