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

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

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

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

Q&A

解決済

1回答

11947閲覧

google apps script フォームの回答取得

ISSHIN

総合スコア12

Google Apps Script

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

0グッド

0クリップ

投稿2016/08/14 16:10

編集2016/08/15 00:55

google apps script を使って
フォームで送られた内容をgmailで送信するという機能実装するためにやっているのですが
いろいろなサイトに載っている以下のコードコピーして使ってもエラーを起こします。
http://ascii.jp/elem/000/000/879/879412/index-3.html

google

1function submitForm(e){ 2 var itemResponses = e.response.getItemResponses(); 3 var message = ''; 4 for (var i = 0; i < itemResponses.length; i++) { 5 var itemResponse = itemResponses[i]; 6 var question = itemResponse.getItem().getTitle(); 7 var answer = itemResponse.getResponse(); 8 message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n'; 9 } 10 var address = '☆あなたのGmailアドレスを記入☆'; 11 var title = 'お問い合わせフォームが送信されました'; 12 var content = '以下の内容でフォームが送信されました。\n\n' + message; 13 GmailApp.sendEmail(address, title, content); 14} 15

なので公式のリファレンスを見てみると以下のコードが書かれていたので
https://developers.google.com/apps-script/reference/forms/form-response

google

1var form = FormApp.openById('フォームのid'); 2 var formResponses = form.getResponses(); 3 for (var i = 0; i < formResponses.length; i++) { 4 var formResponse = formResponses[i]; 5 var itemResponses = formResponse.getItemResponses(); 6 for (var j = 0; j < itemResponses.length; j++) { 7 var itemResponse = itemResponses[j]; 8 Logger.log('Response #%s to the question "%s" was "%s"', 9 (i + 1).toString(), 10 itemResponse.getItem().getTitle(), 11 itemResponse.getResponse()); 12 } 13 }

それを使ってみるとメールは送れたのですが回答のタイトルだけが取得され
中身が取得できません。それで色々コードをいじってログを出してやってみたのですが
自分では解決できませんでした。どなたか、ご教授願いします。
※以下のコードが自分のコードです(いじくりすぎてわかりにくくなっています。すいません。)※

google

1var spreadsheetID = SpreadsheetApp.getActiveSpreadsheet().getId(); 2 3function form() { 4 var form = FormApp.openById('フォームのid'); 5 var sheet = SpreadsheetApp.openById(spreadsheetID); 6 var tmSheet = sheet.getSheetByName('シート1'); 7 var Item = form.getItems(); 8 Logger.log(Item); 9 var lastColumn=tmSheet.getDataRange().getLastColumn();//4 10 Logger.log(lastColumn); 11 var formResponses = form.getResponses(); 12 13 var h = formResponses[0]; 14 Logger.log(h); 15 //var l = h.getResponseForItem(); 16 //Logger.log(l); 17 var formlength = formResponses.length;//2 18 Logger.log(formlength);//2 19 20 for (var i = 0; i < lastColumn; i++) { 21 var formResponse = formResponses[i]; 22 Logger.log(formResponse); 23 24 25 var itemResponses = formResponse.getItemResponses(); 26 Logger.log(itemResponses); 27 var itemResponse = itemResponses[i]; 28 Logger.log(itemResponse); 29 var title=itemResponse.getItem().getTitle(); 30 var answer=itemResponse.getResponse; 31 Logger.log(answer); 32 Logger.log(title); 33 //var title1 = title(1,1); 34 var message = ''; 35 if(title=='名前は?'){ 36 var username = answer; 37 } 38 if(title=='今回借りる本の種類は?'){ 39 var book = answer; 40 } 41 if(title=='メールアドレス'){ 42 var mailaddress = answer; 43 } 44 message +=(i+1).toString()+title+answer; 45 //message += (i+1).toString() + '.' +title+'\n'; 46 Logger.log(message); 47 48 //message = message+answer; 49 //Logger.log(message); 50 51 } 52 var address = 'isshintakatsusaido@gmail.com'; 53 GmailApp.sendEmail(address, title, message); 54 } 55 56//var itemResponses = formResponse.getItemResponses(); 57 // var itemResponse = itemResponses[i];

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

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

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

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

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

kei344

2016/08/14 16:14

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。また、参考に下サイトのURLもリンク付きで追記してください。
guest

回答1

0

ベストアンサー

http://ascii.jp/elem/000/000/879/879412/index-3.html

一番最初に提示されたサンプルコードを試しましたが問題なく動作しました。
私の場合はフォーム画面から(スプレッドシートではなく)スクリプトエディタを起動し、そのサンプルコードをコピペし、適宜自分用に変更し(メールアドレス等)、「リソース」→「現在のプロジェクトのトリガー」と進むと、「トリガーが設定されていません。今すぐ追加するにはここをクリックしてください。」というメッセージが出てくるのでそれをクリックし、保存ボタンを押しました。その後、適当に回答をしたらうまくいきました。それでできると思うのですがどうでしょうか?

エラーが起きた時のメッセージが書かれていると良いのですが。

投稿2016/08/19 07:57

true

総合スコア440

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問