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

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

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

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

Q&A

1回答

7008閲覧

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

airportcenter

総合スコア6

Google

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

0グッド

0クリップ

投稿2017/01/14 08:17

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

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

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

エラーメッセージ
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/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

hikochang

2017/01/14 09:51

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

2017/01/25 22:27

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

回答1

0

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

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

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

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

GoogleAppsScript

1function sendForm(e){ 2 3 var TimeStamp; 4 var Name; 5 var Address; 6 var Subject; 7 var Comment; 8 9 var itemResponses = e.response.getItemResponses(); 10 TimeStamp = e.response.getTimestamp(); 11 for (var j = 0; j < itemResponses.length; j++) { 12 var itemResponse = itemResponses[j]; 13 switch( itemResponse.getItem().getTitle() ){ 14 case 'お名前(name)': 15 Name = itemResponse.getResponse() 16 break; 17 case 'メールアドレス(mail)': 18 Address = itemResponse.getResponse() 19 break; 20 case '件名(subject)': 21 Subject = itemResponse.getResponse() 22 break; 23 case 'コメント(comment)': 24 Comment = itemResponse.getResponse() 25 break; 26 } 27 } 28 29 var mail_to = 'contactus@xxxx.co.jp'; 30 var subject = "ホームページからの問い合わせ:"+Subject; 31 var body = "ホームページからの問い合わせがありました\n\n" 32 + "時間:" + TimeStamp + "\n" 33 + "お名前(name):" + Name + " 様\n" 34 + "メールアドレス(mail):" + Address + "\n" 35 + "件名(subject):" + Subject + "\n" 36 + "コメント(comment):\n" + Comment; 37 var mail_bcc = "admin@xxxx.co.jp"; 38 var mail_reply = 'contactus@xxxx.co.jp'; 39 MailApp.sendEmail(mail_to, subject,body, {replyTo:mail_reply,bcc: mail_bcc,noReply:true}); 40 41}

イメージ説明

投稿2017/01/14 09:46

編集2017/02/03 03:55
hikochang

総合スコア648

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

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

airportcenter

2017/01/17 15:23

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

2017/01/17 16:27

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問