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

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

ただいまの
回答率

90.53%

  • Google

    789questions

    Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

「『Google Apps Script』を使って『Google Forms』でメールを送信する方法」エラー解決方法

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 3,120

■■な機能を実装中に以下のエラーメッセージが発生しました。

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

色々試しましたが動きません。よくわかっていないので教えていただくと助かります。

エラーメッセージ
TypeError: undefined からプロパティ「response」を読み取れません。(行 3、ファイル「コード」)

該当のソースコード

https://liginc.co.jp/web/programming/other-programming/149958で記載されているScriptがエラーになって動きません。

function myFunction(e){
//初期設定
var itemResponses = e.response.getItemResponses();
var message = '';
//入力項目の解析
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
var question = itemResponse.getItem().getTitle();
var answer = itemResponse.getResponse();

if(question=="タイトル"){
var cTitle=answer;
}else if(question=="詳細"){
message=answer;
}else if(question=="日付"){
var cDate=answer.replace(/-/g,'/');
var cEDate=cDate;
}else if(question=="開始時刻"){
var cDate=cDate + " " + answer;
}else if(question=="終了時刻"){
var cEDate=cEDate + " " + answer;
}
}
//Googleカレンダーへの投稿
var objCalendar = CalendarApp.getCalendarById('「Google Calender IDを記述」');
var objEvent = objCalendar.createEvent(cTitle,new Date(cDate),new Date(cEDate),{description:message}).setGuestsCanSeeGuests(false);
}

試したこと

スペルが間違っているか色々調査

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

より詳細な情報

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hikochang

    2017/01/14 18:51

    タイトルはメール送信ですが、コードはカレンダー登録になっています。

    キャンセル

  • hikochang

    2017/01/26 07:27

    トリガー設定について追記しましょう

    キャンセル

回答 1

0

以下の設定をしてから、フォームを送信しましたか?
リソース=>現在のプロジェクトのトリガー
フォームから、フォーム送信時

追記
なるほど、参考にしたページを見ましたが、トリガー登録について書いてないですね。
スクリプトが実行されるタイミングを指定しないとスクリプトは動きません。
スクリプトエディタで上に示した設定をして下さい。
その上で動作確認すると良いです。
動作確認は実際にフォームを送信しないとダメです。
スクリプトエディタ上で実行したのではないでしょうか?

トリガー設定時に通知を設定しておくと、スクリプト実行時に発生したエラーがメールで送信されてきます。

追加:
以下のコードで運用してます。

function sendForm(e){

  var TimeStamp;
  var Name;
  var Address;
  var Subject;
  var Comment;

  var itemResponses = e.response.getItemResponses();
  TimeStamp = e.response.getTimestamp();
  for (var j = 0; j < itemResponses.length; j++) {
    var itemResponse = itemResponses[j];
    switch( itemResponse.getItem().getTitle() ){
      case 'お名前(name)':
        Name = itemResponse.getResponse()
        break;
      case 'メールアドレス(mail)':
        Address = itemResponse.getResponse()
        break;
      case '件名(subject)':
        Subject = itemResponse.getResponse()
        break;
      case 'コメント(comment)':
        Comment = itemResponse.getResponse()
        break;
    }
  }

  var mail_to    = 'contactus@xxxx.co.jp';
  var subject = "ホームページからの問い合わせ:"+Subject;
  var body = "ホームページからの問い合わせがありました\n\n"
        + "時間:" + TimeStamp + "\n"
        + "お名前(name):" + Name + " 様\n"
        + "メールアドレス(mail):" + Address + "\n"
        + "件名(subject):" + Subject + "\n"
        + "コメント(comment):\n" + Comment;
  var mail_bcc    = "admin@xxxx.co.jp";
  var mail_reply  = 'contactus@xxxx.co.jp';
 MailApp.sendEmail(mail_to, subject,body, {replyTo:mail_reply,bcc: mail_bcc,noReply:true});

}

イメージ説明

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/18 00:23

    連絡有難うございます。フォームから実行してもカレンダーへ出力されない状況です、どうも 全く同じ内容通りで行なってみましたが同様なエラーになり、同じ内容のscriptで自動でメールを送ると言うscriptも同じところで引っかかるようです。何かGoogleで仕様を変えたのでしょうか?

    キャンセル

  • 2017/01/18 01:27

    フォームからの問い合わせをメールで関係者に通知するスクリプトを回答に追記しておきました。先週動作している事を確認しています。

    キャンセル

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

  • Google

    789questions

    Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。