🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google フォーム

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

Google Apps Script

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

Q&A

1回答

5326閲覧

Google formsで添付された画像を自動返信のメールに添付したい

mutcha

総合スコア7

Google フォーム

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

Google Apps Script

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

0グッド

0クリップ

投稿2021/02/17 15:25

前提・実現したいこと

「添付画像」という項目が画像を添付する設問なのですが、
その時に画像IDを取得し、添付ファイルにしたいと考えています。
しかしメール自体は送信できるものの、添付ファイルになりません。

また、欲を言えば複数の添付ファイルを添付できるようにしたいです。

該当のソースコード

function sendForm(e){ // 件名 var subject = "報告書が記入されました"; // 本文 var body = "内容は下記の通りです。"; // メール送信先 var to = "xxxx"; var itemResponses = e.response.getItemResponses(); for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var type = itemResponse.getItem().getType(); var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); if(question == "添付画像"){  var img = DriveApp.getFileById(answer).getBlob();  var options = { "attachment": img, }; } // 回答項目  body += "\n\n【" + question + "】\n\n";  // 回答内容 body += answer; } MailApp.sendEmail({to:to,subject:subject,body:body,options:options}) }

試したこと

参考にしたURL
https://auto-worker.com/blog/?p=2612#toc_id_1

letではなくvarを利用しています。
最後のMailApp.sendEmailの書き方は異なりますが、問題ありますでしょうか。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

JavaScript

1 var options = { 2 attachment: img, 3 };

attachmentではなくattachments(最後のsが必要)、渡す値はBlobSource[](配列)です。
複数渡したければループ内で配列にBlobを追加してループ終了後にoptionsを作成してください。

また options を引数にわたすオーバーロードとは引数の渡し方を誤っています。

  1. sendEmail(recipient, subject, body, options)

https://developers.google.com/apps-script/reference/mail/mail-app#sendemailrecipient,-subject,-body,-options

  1. sendEmail(message)

https://developers.google.com/apps-script/reference/mail/mail-app#sendemailmessage

JavaScript

1 var images = []; 2 var itemResponses = e.response.getItemResponses(); 3 for (var i = 0; i < itemResponses.length; i++) { 4 //(省略) 5 6 if (question == "添付画像") { 7 var img = DriveApp.getFileById(answer).getBlob(); 8 images.push(img); 9 } 10 11 //(省略) 12 } 13 14 //オーバーロード1なら 15 var options = { attachments: images }; 16 MailApp.sendEmail(to, subject, body, options); 17 18 //オーバーロード2なら 19 var message = { to: to, subject: subject, body: body, attachments: images }; 20 MailApp.sendEmail(message);

投稿2021/02/17 23:32

編集2021/02/18 22:16
draq

総合スコア2577

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

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

mutcha

2021/02/18 09:48

有難うございます。 下記のように修正し、ループも追加しましたが、 画像がまだ添付されてきません。 若干長くなってしまいますが、省略せず現状を添付します。 気になっているのはoptionの内容で、sendmailでちゃんと添付の指示がされていないのでしょうか。  var images = []; var itemResponses = e.response.getItemResponses(); for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var type = itemResponse.getItem().getType(); var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); if(question == "添付画像"){ for (var k = 0; k < 5; k++){ var img = DriveApp.getFileById(answer).getBlob();  images.push(img); }  var options = { attachments: images, }; } if(type == 'GRID'){   var rows = itemResponse.getItem().asGridItem().getRows();  // 回答項目   body += "\n\n【" + question + "】\n\n";  for(var j = 0; j < rows.length; j++){ var rowname = rows[j]; var answercol = answer[j];   // 回答内容   body += rowname + ": " + answercol + '\n'; }  }else{ // 回答項目  body += "\n\n【" + question + "】\n\n";  // 回答内容 body += answer; } } MailApp.sendEmail({to:to,subject:subject,body:body,options:options}) }
draq

2021/02/18 22:15

よく見ると MailApp.sendEmail の引数も間違っています。回答も修正しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問