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

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

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

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

Q&A

解決済

1回答

3111閲覧

Googleフォームにアップロードされたファイルをメールで転送したい

jmokopunsk

総合スコア1

Google Apps Script

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

0グッド

0クリップ

投稿2022/04/05 12:08

初心者です。お世話になります。

Googleフォームの回答内容(アップロードされたファイルを含む)をメールで送信(転送)するスクリプトを以下を参考に作成中です。
参考①https://technical.verybestcbp.com/addfiles/?amp=1
参考②https://teratail.com/questions/01gyu7offoabgc

Googleフォームの設定内容は以下の2点です。
・添付ファイルのアップロードをする質問項目は2問以上ある。
・添付ファイルのアップロードをする質問項目は全て「必須ではない」設定

このうち、ファイルをアップロードする質問のいずれかが「未回答」だった場合の対処方法(アップロードされた質問のファイルのみをメールで送る、アップロードがない場合はファイルを添付せず送る)についてご相談させていただければと思います。

ファイルをアップロードする質問項目が1問の場合、「参考②」より以下のようにすればできました。

let options = { "attachments": attachImg ? [attachImg] : null }

「参考①」のようにファイルをアップロードする質問項目が2問以上ある場合、どのような記載になるかご教示いただけませんでしょうか。

function sendForm(e) { const to = e.response.getRespondentEmail() //「このフォームでは回答者のメールアドレスを収集しています。」のメアド // 件名 const subject = "報告書が記入されました" // 本文 let body = "内容は下記の通りです。" let itemResponses = e.response.getItemResponses() let attachImg1 = "" let attachImg2 = "" 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 == "添付ファイル1") { attachImg1 = DriveApp.getFileById(answer).getBlob(); } if (question == "添付ファイル2") { attachImg2 = DriveApp.getFileById(answer).getBlob(); } // 回答項目 body += "\n\n【" + question + "】\n\n"; // 回答内容 body += answer; } let options = { "attachments": attachImg ? [attachImg] : null } MailApp.sendEmail(to, subject, body, options) }

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記ではいかがでしょうか。

js

1function sendForm(e) { 2 3 const to = e.response.getRespondentEmail() //「このフォームでは回答者のメールアドレスを収集しています。」のメアド 4 5 // 件名 6 const subject = "報告書が記入されました" 7 // 本文 8 let body = "内容は下記の通りです。" 9 10 let itemResponses = e.response.getItemResponses() 11 12 let attachImg = []; 13 14 for (var i = 0; i < itemResponses.length; i++) { 15 var itemResponse = itemResponses[i]; 16 var type = itemResponse.getItem().getType(); 17 var question = itemResponse.getItem().getTitle(); 18 var answer = itemResponse.getResponse(); 19 20 if (type === FormApp.ItemType.FILE_UPLOAD) { 21 attachImg = [...attachImg, ...[...answer].map(e => DriveApp.getFileById(e).getBlob())]; 22 } 23 24 // 回答項目 25 body += "\n\n【" + question + "】\n\n"; 26 // 回答内容 27 body += answer; 28 29 } 30 31 let options = { 32 "attachments": attachImg 33 } 34 35 MailApp.sendEmail(to, subject, body, options) 36}

投稿2022/04/06 16:14

編集2022/04/08 03:33
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

jmokopunsk

2022/04/07 10:10

おかげさまで実行できました!何日も迷っていたので大変助かりました! もし宜しければ「各質問項目でアップロードされるファイルが複数ある場合」についてもご教示いただけないでしょうか。 今回のもので試したところエラーとなってしまい、宜しければご指導のほどお願いいたします。
退会済みユーザー

退会済みユーザー

2022/04/07 11:45

修正しました
jmokopunsk

2022/04/07 12:38

わざわざご修正いただきありがとうございます。 修正いただいた内容で試したところ、複数あるファイルアップロードの質問項目のうち、最後の質問項目でアップロードされたファイルしか転送されないようでした。 何か設定が良くなかったのでしょうか?ご指導いただけますと幸いです。
退会済みユーザー

退会済みユーザー

2022/04/07 23:52

修正しました。
jmokopunsk

2022/04/08 12:24

無事実行できました! 何度もご指導いただき本当にありがとうございます! 自分の身に付けられるようしっかり勉強させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問