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

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

新規登録して質問してみよう
ただいま回答率
85.31%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

Q&A

1回答

1467閲覧

スプレッドシートからGASにてメールを送信時、1つのメールに宛先を複数入れたい。

Nasu1225

総合スコア3

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Google Apps Script

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

0グッド

0クリップ

投稿2022/04/30 10:59

前提・実現したいこと

スプレッドシートでTODOリストを作成し、
未実施者にリマインドメールを送るようなGASを作っています。

送信対象者が多数なことを想定し、
1つのメールに宛先を複数入れれるよう設定をしたいのですが、
なかなかうまくいきません。

縦にアドレスを、横にTODOリストと締め切りを記載しています。

二次元配列を行い、pushにて追加をすればうまくいくかと思いきや、
一つずつ宛先が追加されていき、理想としていたものが出来ませんでした。

発生している問題・エラーメッセージ

イメージ説明

該当のソースコード

function timeline() { var mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var mySheet = mySpreadsheet.getSheetByName("シート8"); //対象スプレッドシートのシート名を記載 var myEndColumn = mySheet.getLastColumn(); //最終列取得 var myEndRow = mySheet.getLastRow(); //最終行取得 var myRange = mySheet.getDataRange(); //sheetの範囲指定(全部) var myValues = myRange.getValues(); //指定した範囲の値を格納 var today = new Date(); today.setDate(today.getDate()+5); var date = Utilities.formatDate(today, "JST","MM/dd"); //5日後計算 var limitday = []; var address = []; for (var i = 3; i <myEndColumn; i++){ var limit = myValues[0][i]; var limit = Utilities.formatDate(limit, "JST","MM/dd"); //Logger.log(limit) limitday.push(limit); if(date == limit){ //月曜日~金曜日のみ実行   for (var y = 5;y<myEndRow;y++){ //縦にループ  var myWorking = ""; //未完了案件格納用  if(myValues[y][2] != ""){ //E-mailが空白以外の場合     for (var x = 3;x<myEndColumn;x++){ //yokoにループ if(myValues[y][x] == ""){ //未実施の場合 //未完了案件情報を格納 myWorking = myWorking + "・" + myValues[3][x] + "\n" + "締切期限:" + Utilities.formatDate(myValues[0][x],"JST","yyyy/MM/dd") +"\n" } } if(myWorking != ""){ //未完了案件情報が空白以外の場合   //メールオプション設定 var option = new Object; option.name = "5課リマインドBOT"; //送信者名          //宛先セット-------------------------------------------------- myMailTo1 = myValues[y][2];  address.push(myMailTo1); Logger.log(address); //件名セット-------------------------------------------------- mySubject1 = "TODO試作【timeline】対応状況_" + Utilities.formatDate(today,"JST","yyyy/MM/dd");  //本文セット-------------------------------------------------- myBody1 = "5課の皆様\n\n" +   "お疲れ様です。\n" + "5課リマインドBOTです。\n\n" +  "表題の件ですが、\n"+ "実施管理リストにて、以下の締め切りが近づいております。\n"+ "お忙しい中大変恐縮ですが、\n"+ "各自実施の上、実施管理リスト並びに重要周知事項のご確認をお願いいたします。\n\n"+ myWorking + "\n" + "5課リマインドBOT" //------------------------------------------------------------ GmailApp.sendEmail(address,mySubject1,myBody1,option) //メール送信 } } } } } }

1つのメールに対して複数の宛先を入れるやりかたがなかなか見つからず質問させていただきました。

どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

宛先をカンマで区切ってはいかがでしょうか。

js

1GmailApp.sendEmail(address.join(),mySubject1,myBody1,option)

ドキュメント の recipientに「comma separated list of email addresses」との記述があります。

join() メソッドは、配列 (または配列風オブジェクト) の全要素を順に連結した文字列を新たに作成して返します。

js

1const elements = ['Fire', 'Air', 'Water']; 2console.log(elements.join()); 3// "Fire,Air,Water"

引用:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/join

投稿2022/04/30 11:13

編集2022/04/30 11:16
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問