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

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

新規登録して質問してみよう
ただいま回答率
85.47%
Google フォーム

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

Google Apps Script

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

Q&A

解決済

1回答

993閲覧

Google Formに入力された問い合わせ内容が自動で指定メールアドレスに届くGASを作成したい

pes881

総合スコア1

Google フォーム

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

Google Apps Script

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

0グッド

2クリップ

投稿2021/08/26 00:53

概要

会社の問い合わせフォームをGoogle Formにて作成し、問い合わせがあるとGoogle Apps Scriptにより問い合わせ先部署に自動でメールが届くようにしたいと考えております。
スクリプトは作成しましたが、特定の条件下でうまく作動しないことがあるため、お知恵を拝借できますでしょうか。
何卒よろしくお願い致します。

詳細

・問い合わせフォームはGoogleフォームにて作成。

・フォーム内の項目は以下の通りです。
(1) 「問い合わせ先(プルダウンで選択)」 *入力必須
(2) 「氏名」 *入力必須
(3) 「メールアドレス」 *入力必須
(4) 「件名」 *入力必須
(5) 「問い合わせ内容」 *入力必須
(6) 「添付ファイル」 *ファイルのアップロードが可能。任意。アップロードしないことも可能。

・Googleフォームに問い合わせ内容が入力され、送信されると、下記のGASにて(1)「問い合わせ先」部署に問い合わせ内容が自動でメールが届くようにしています。
上記の(1)~(5)のすべてが入力され、かつ(6)においてファイルが添付されている際には問題なく作動します。

★しかし、(6)「添付ファイル」に何もアップロードされていない場合にはスクリプトがエラーを起こし、作動しません。

以下のエラーメッセージが届きます。
関数 sendForm
エラー メッセージ Exception: 無効な引数: attachments

実現したいこと

(6)「添付ファイル」において、何もアップロードされていない場合でも、スクリプトが作動するような良い方法がございましたらご教示いただけますでしょうか。
宜しくお願い致します。

GASのスクリプト

function sendForm(e) {

var to = "sample@example.com";

// 件名
const subject = "問い合わせが届きました / A message has been received."
// 本文
let body = "以下のお問合せがございました。ご確認いただきますようお願い致します。返信する場合には、本文中のメールアドレスへの連絡をお願いします。 *本メールは配信専用です。本メールに配信なさらないようご注意ください。\nYou have received the following message. When replying, please contact them via the email address in the text below. *This is an automated message. Please do not reply to this email. "

let itemResponses = e.response.getItemResponses()

let attachImg1 = ""

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==="問い合わせ先(部署名)") { if (answer==="人事部") { to = "hr@llmtc.ac.jp"; } else if (answer==="経理部") {to = "accounting@llmtc.ac.jp";} else if (answer==="広報部") {to = "pr@llmtc.ac.jp";} else if (answer==="総務部") {to = "generalaffairs@llmtc.ac.jp";} else if (answer==="法務部") {to = "leagal@llmtc.ac.jp";} else if (answer==="財務部") {to = "finance@ llmtc.ac.jp";} } if (question == "添付ファイル/Attached File") { attachImg1 = DriveApp.getFileById(answer).getBlob(); } // 回答項目 body += "\n\n【" + question + "】\n\n"; // 回答内容 body += answer;

}

let options = {
"attachments": [attachImg1]
}

MailApp.sendEmail(to, subject, body, options)
}

補足

上記スクリプト内のメールアドレスは架空のものに置き換えております。

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

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

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

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

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

guest

回答1

0

ベストアンサー

添付ファイルがある場合とない場合でMailApp.sendEmailのところをわけたほうがいいと思います。
うまくいくかわからないので、2つコードを提示してみます。
その1attachImg1の値があるかないか判断するコード

GAS

1 //添付ファイルがある場合 2 if(attachImg1){ 3 let options = { 4 attachments: [attachImg1], 5 }; 6 MailApp.sendEmail(to, subject, body, options); 7 } 8 //添付ファイルがない場合 9 else{ 10 MailApp.sendEmail(to, subject, body); 11 }

その2MailApp.sendEmailでエラーが出た場合(こっちのほうが動く確率が高いと思います)

GAS

1 //成功した場合(添付ファイルがある場合) 2 try{ 3 MailApp.sendEmail(to, subject, body, options); 4 } 5 //失敗した場合(添付ファイルがない場合) 6 catch(ex){ 7 MailApp.sendEmail(to, subject, body); 8 }

投稿2021/08/28 20:06

fake_shibe

総合スコア806

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

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

pes881

2021/08/30 02:13

fake_shibe様 この度は大変お忙しい中、ご回答いただきありがとうございました。 無事に意図したとおりに動作しました。大変助かりました。 「その1、attachImg1の値があるかないか判断するコード」でご提示いただいたコードで意図したとおりに動きました。 逆に、「その2、MailApp.sendEmailでエラーが出た場合」では、添付ありの場合でも、添付なしの場合でもメールそのものは送られてきましたが、添付ありの場合のメールにファイルが添付されませんでした。 重ねてになりますが、この度は誠にありがとうございました。 今後も機会がございましたら、何卒よろしくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問