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

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

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

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

Q&A

解決済

1回答

1269閲覧

Googleフォームに入力した複数のアドレスにメールを送信する方法

ankou

総合スコア15

Google Apps Script

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

0グッド

1クリップ

投稿2018/08/22 04:02

2度目の質問になります。

■やりたいこと
Googleフォームを使って回答
回答した内容はスプレッドシートに自動反映
Googleフォームの設問内容に共有したい人のアドレスを入力する欄あり。
フォームで入力した複数のアドレス宛だけにフォームの回答内容を共有したいです。

■試してること
フォーム回答したら自動的にスプレッドに反映されるので、スプレッドのスクリプトエディタに設定しています。

■問題点
回答フォームで回答したらスプレッドに自動反映されるため、常に最終行に反映されたアドレス宛にメールが送られるように設定したいが、取得するアドレスが1つだけになります。
メールの宛先を
mailto = myValues[y-1][x]
にすると1つだけアドレスを読み取り送信されます。

常に最終行に記載された列で並んでいる複数のアドレスを読み取り、送信するにはどうすればよろしいでしょうか。

■実際に作成したスクリプト

// フォーム送信されたら起動、最終行の内容をメールに記載して、送信する
function sendmail() {

// スプレッドシートの操作
var sh = SpreadsheetApp.getActiveSheet();
var rows = sh.getLastRow();
var cols = sh.getLastColumn();
var rg = sh.getDataRange();
var myValues = rg.getValues(); //指定した範囲の値を格納
Logger.log('rows='+rows+' cols='+cols);
var y = rows;
var x = 5;

// 件名、本文
var subject = '件名'
var body = '';

// メール送信先(管理者等)
var mail_admin アドレス';
var mail_cc = '';
var mail_reply = mail_admin;

Logger.log('rows='+rows+' cols='+cols);

// メール本文作成
for (var j = 1; j <= cols; j++ ) {
var clmn_name = rg.getCell(1, j).getValue(); // カラム名
var clmn_value = rg.getCell(rows, j).getValue(); // 入力値
body += ( '【' + clmn_name + '】' + '\n' + clmn_value + '\n\n' );
}

// メール宛先
mailto = myValues[y-1][x];

// メール送信
if ( mailto ) {
MailApp.sendEmail(mailto, subject, body, {cc : mail_cc, replyTo : mail_reply});
}else{
MailApp.sendEmail(mail_admin, 'error spreadsheet none mailaddress', body);
}
}
ーーーーーーーーーー

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

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

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

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

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

macaron_xxx

2018/08/22 05:20

「Googleフォームの設問内容に共有したい人のアドレスを入力する欄あり」→どのようにして複数のメールアドレスを入力させているのでしょうか。フォームのタイプ(記述式、プルダウンなど)を教えてください。
ankou

2018/08/22 05:24

記述式のタイプです。入力した場合、スプレッドシートには列でそれぞれF列、G列に記載されます。
macaron_xxx

2018/08/22 05:30

それって、それぞれ記述式の共有したい人のアドレスの入力欄があって、MAX2名(任意)まで共有者を指定できるってことですか?
ankou

2018/08/22 05:36

はい。そういう回答フォームになっています。現在はアドレス入力欄は2箇所ですがMAXで5つまで増やそうと考えています。今は2つで、アドレスを2つ入力しても最初に入力したアドレス宛にしか回答フォームの内容が配信されません。
macaron_xxx

2018/08/22 05:38

増やすたびにスクリプトをいじることになりますね。。1つ目の入力欄に、カンマ区切りでメールアドレスを入力してもらうようにすれば、今のスクリプトでも送れますよ!
ankou

2018/08/22 05:57

なるほどですね!その方法もありました。一度それでも試してみようと思います。
guest

回答1

0

ベストアンサー

javascript

1var mail_cc = myValues[y-1][x+1]+','+myValues[y-1][x+2];

投稿2018/08/22 05:37

編集2018/08/22 09:12
papinianus

総合スコア12705

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

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

macaron_xxx

2018/08/22 05:56

a comma-separated list of email addresses to CC となっているので、区切り文字はカンマですかね。
ankou

2018/08/22 06:01

度々ありがとうございます。 ccに入力することで、2つ目のアドレス宛にも送信することができました。 macaronさんにもご教示いただきましたが現在の方法で解決できそうなので本件をベストアンサーにさせていただきます。 macaronさんもご知力いただきまして本当にありがとうございます。
papinianus

2018/08/22 06:04

カンマにしました。ご指摘感謝します。
ankou

2018/08/22 08:51

上記のように入力するとステートメントの前に;がありませんエラーが表示 var mail_cc = myValues[y-1][x+1]+’,’myValues[y-1][x+2] でやるとエラーがでました。。
papinianus

2018/08/22 09:13

編集の過程で+が落ちてました
ankou

2018/08/22 09:18

早急な返信ありがとうございます。アドレスを3つ4つと増やした場合は+','+ を追加していくことになりますか?
papinianus

2018/08/22 09:20

そうなります。+','+でmyValuesのxを増やしながら連結していくことになります
ankou

2018/08/22 10:35

上手く動かすことができました。 細かくご指導いただきありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問