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

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

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

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

Google フォーム

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

Google Apps Script

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

受付中

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

c5rkk
c5rkk

総合スコア13

Sendmail

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

Google フォーム

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

Google Apps Script

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

1回答

0リアクション

0クリップ

436閲覧

投稿2018/09/19 08:45

編集2018/09/21 07:55

前提・実現したいこと

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

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

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

該当のソースコード

Google

function submitForm(formData) { var emailAddress = formData.response.getRespondentEmail(); var questioneeName = ""; //set titles of the questions that you want to get answers var questionForName = "名字" var responses = formData.response.getItemResponses(); var message = ''; for (var i = 0; i < responses.length; i++) { var response = responses[i]; var question = response.getItem().getTitle(); var answer = response.getResponse(); message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n'; if ( question == questionForName) {    questioneeName = answer; } } sendEmail(emailAddress, questioneeName) } function sendEmail(emailAddress, questioneeName) { var recipient = emailAddress; var subject = "ご応募ありがとうございます"; var body = questioneeName + " 様\n\n" + "こんにちは。\n\n"; "この度は、【●●●】にご応募いただきありがとうございます。\n"; "以下の内容で回答を受け付けました。\n\n"; + message; "\n\nそれではよろしくお願い致します。"; var options = { name: "●●●運営事務局" }; try { MailApp.sendEmail(recipient, subject, body, options); }catch(e){ var admin = "example.gmail.com"; MailApp.sendEmail(admin, "【自動返信失敗】メール送信中にエラーが発生しました", e.message); } }

補足情報(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";

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Sendmail

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

Google フォーム

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

Google Apps Script

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