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

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

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

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

Google

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

Q&A

解決済

1回答

4999閲覧

Googleフォームに送信された写真をメールに転送したいです.

AKAZUKIN7123

総合スコア8

Google Apps Script

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

Google

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

0グッド

0クリップ

投稿2018/04/05 07:10

編集2018/04/05 16:13

前提・実現したいこと

Googleフォームについての質問です.
現在Googleフォームに回答が入ると,内容すべてがメールに転送されるようにしています.

先日,写真のアップロードができることを知りフォームに追加しました.

私が実現したいこと:
Googleフォームに,回答者がアップロードした写真もメールに転送したいです.

実際:
メールに転送されて送られてくる内容は,写真ではなく写真のIDになってしまいます.

写真の転送が難しいのであれば,転送メールに写真のURLを表示するようにできないか?とも考えたのですが,私にはできませんでした.

これを実現することができる,スクリプトエディタのコードの書き方を教えていただけませんか.

よろしくお願い致します.

現状のコード

function submitForm(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();
message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n';
}
var address = '1234567890@gmail.com';
var title = '[あいうえお]';
var content = 'かきくけこ\n\n' +
message; GmailApp.sendEmail(address, title, content);
}

発生している問題

Googleフォームに,回答者がアップロードした写真もメールに転送したいのですが,メールに転送されて送られてくる内容は,写真ではなく写真のIDになってしまいます.

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/04/05 14:13

可能な範囲で(伏せるべき情報は伏せて)現状のコードを提示していただけますか?
guest

回答1

0

ベストアンサー

オーソドックスに添付する方法と、インラインイメージとしてメッセージに含む方法があります。
いずれにしましても、以下がポイントとなります。
0. フォーム送信時のトリガーにおいて、getResponse()では、アップロード画像のID配列となる(1点でも)
0. アップロードされた画像はフォーム設置アカウントのマイドライブ内に保存されるため、取得にはDriveAppでの操作が必要

その上で、画像は1点、JPEG前提で、以下、必要な部分のみ追記・修正しています。
(PNG等はMimeTypeを変更)
**{画像アップロードの質問タイトル}**を必要に応じて差し替えていただければ動くと思いますが、動作確認はしていませんので参考まで。

なお、蛇足ですが、参考にしたサイトがあれば追記頂いたほうが良いと思います。

添付

javascript

1function submitForm(e){ 2 /*省略*/ 3 for (var i = 0; i < itemResponses.length; i++) { 4 /*省略*/ 5 var answer = itemResponse.getResponse(); 6 var options = {}; //オプション設定用オブジェクト 7 if(question == '{画像アップロードの質問タイトル}'){ 8 var img = DriveApp.getFileById(answer[0]); 9 options.attachments = img.getAs(MimeType.JPEG); //JPEG前提 10 } 11 else{ 12 message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n'; 13 } 14 } 15 /*省略*/ 16 GmailApp.sendEmail(address, title, content, options); 17}

インラインイメージ

javscript

1/*省略*/ 2var answer = itemResponse.getResponse(); 3var options = {}; //オプション設定用オブジェクト 4if(question == '{画像アップロードの質問タイトル}'){ 5 var img = DriveApp.getFileById(answer[0]); 6 options.htmlBody = '<img src="cid:ansImg" />'; 7 options.inlineImages = {ansImg:img}; //JPEG以外も可 8} 9/*省略*/

[参考]

投稿2018/04/06 00:04

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

AKAZUKIN7123

2018/04/06 14:14

説明と合わせて回答いただきましてありがとうございます。 ここ最近のもやもやが解決し、本当に感謝しております。 とても丁寧に教えていただき、感動しております。 また、参考にしたサイトですが、このコードを私のフォームに使用したのが1年以上前のため、どのサイトから引用したのかわからない状態になってしまっています。 今後はこのようなことの無いように対応したいと思います。ご指摘に対してもありがとうございます。
退会済みユーザー

退会済みユーザー

2018/04/06 23:58

解決して何よりです。
AKAZUKIN7123

2018/04/08 04:39

先日はありがとうございました。 本日フォームを使おうとしたところ、転送されませんでした。 (本当にできる確認していませんでした。。) どこが間違いかわからず..困っています。 可能でしたら、再度、コードを見ていただけると助かります。 https://teratail.com/questions/120856?modal=q-comp
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問