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

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

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

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

Q&A

解決済

1回答

822閲覧

複数の企業に一斉メール送信したい(異なるファイルを添付/未完了企業のみに送信)

ankou

総合スコア15

Google Apps Script

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

0グッド

0クリップ

投稿2018/11/13 08:40

編集2018/11/13 13:52

いつもお世話になっております。
ネットを見たり本を見たりして対応しておりますがまだまだのところがあり投稿させていただきます。

【やりたいこと】以下3つのスクリプトを一斉に実行
①複数の企業に一斉メール配信
②催促案件のメールの為、完了していない企業にのみ配信
③複数の企業に異なるファイルを添付して送信

【できているところ】
・スプレッドに宛先リストと件名、本文のシートを作成し一斉送信
【できていないところ】
・未完了のところだけに送信するスクリプト
・異なるファイルを添付するスクリプト(格納はGoogleドライブ)

【現状のスクリプト】
function sendMail() {
//------------- (1)宛先リストから処理対象の行数を取得 -----------------------
var ss = SpreadsheetApp.getActiveSpreadsheet();
// 宛先リストシートを取得
var sheetAtesakiList = ss.getSheetByName("宛先リスト");
// データが入力されている範囲を取得
var datRange = sheetAtesakiList.getDataRange();
// 処理対象の行数を取得
var numRows = datRange.getNumRows();
//------------- (2)メール本文の情報を取得 -----------------------
// メール本文シートを取得
var sheetMailHonbun = ss.getSheetByName("メール本文");
// メール件名を取得
var subject = sheetMailHonbun.getRange(2, 3).getValue();
// メール本文を取得
var body = sheetMailHonbun.getRange(4, 3).getValue();
// 処理を開始する行番号を取得
var start = sheetAtesakiList.getRange(1, 5).getValue();

//------------- (3)メール送信処理 -----------------------
for (var i = start;i <= numRows;i++) {
// 対象行の差込データを取得
var sasikomiData1 = sheetAtesakiList.getRange(i, 6).getValue();
var sasikomiData2 = sheetAtesakiList.getRange(i, 7).getValue();
var sasikomiData3 = sheetAtesakiList.getRange(i, 8).getValue();
var sasikomiSubject = subject;
var sasikomiBody = body;

// 差込データ1が入力されている場合は、差込処理を行う(件名+本文) if (sasikomiData1 != "") { sasikomiSubject = sasikomiSubject.replace("{{差込データ1}}", sasikomiData1, "g"); sasikomiBody = sasikomiBody.replace("{{差込データ1}}", sasikomiData1, "g");} // 差込データ2が入力されている場合は、差込処理を行う if (sasikomiData2 != "") { sasikomiSubject = sasikomiSubject.replace("{{差込データ2}}", sasikomiData2, "g"); sasikomiBody = sasikomiBody.replace("{{差込データ2}}", sasikomiData2, "g");} // 差込データ3が入力されている場合は、差込処理を行う if (sasikomiData3 != "") { sasikomiSubject = sasikomiSubject.replace("{{差込データ3}}", sasikomiData3, "g"); sasikomiBody = sasikomiBody.replace("{{差込データ3}}", sasikomiData3, "g");} // 対象行の宛先を取得 var to = sheetAtesakiList.getRange(i, 2).getValue(); var cc = sheetAtesakiList.getRange(i, 3).getValue(); var bcc = sheetAtesakiList.getRange(i, 4).getValue(); MailApp.sendEmail(to,sasikomiSubject,sasikomiBody,{cc:cc, bcc:bcc}); // 配信状態を設定 sheetAtesakiList.getRange(i, 5).setValue("配信済");};

//ココマデ//

スプレッドシートの
宛先リストに完了ステータスを設置して「済」/「未」を選択した後、「未」の企業へメール配信
且つ送信する際はドライブに格納されている(空白の場合もあり)ファイルを添付して送信できるようにしたい。

ご教授いただければ幸いです。

※追加です。
”対象行の宛先を取得”のところに以下のスクリプトを記載したのですが
エンドレスでメールが配信されるという事象が発生していましました。

for(i=5; i< sheet.getLastRow(); i++){
var joukyou = sheet.getRange(i, 9).getValue();
if (joukyou !="未"){

var to = sheetAtesakiList.getRange(i, 2).getValue(); var cc = sheetAtesakiList.getRange(i, 3).getValue(); var bcc = sheetAtesakiList.getRange(i, 4).getValue(); MailApp.sendEmail(to,sasikomiSubject,sasikomiBody,{cc:cc, bcc:bcc}); // 配信状態を設定 sheetAtesakiList.getRange(i, 5).setValue("配信済");};

if (jouken == "済"){
break;}
}

縦の列を読みとり「済」であれば未配信、「未」であればその行の宛先、企業名を読み取り配信としたいと考えています。

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

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

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

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

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

macaron_xxx

2018/11/13 10:20

スプレッドシートの値のサンプルがないとなんともいえません。「異なるファイルを添付する」企業とファイルのヒモ付はどうしますか?スプレッドシートにそれぞれのファイルIDを記載しますか?ファイル名と企業名が紐付いていますか?仕様を明確にしてください。
ankou

2018/11/13 13:49

わかりづらくて申し訳ございません、一部追加いたしました。また、企業とファイルの紐づけですが、ファイル名と企業名は紐づいています。
macaron_xxx

2018/11/14 04:17

マークダウンにのっとって、コードを書いてください。読みにくいです。
ankou

2018/11/14 10:02

すみません。一度この件はクローズして頭の中をもう少し整理して再起票いたします。ありがとうございます
guest

回答1

0

ベストアンサー

追記なさった部分で、変数の名前がjoukyouとjoukenのそれぞれ異なっています。

投稿2018/11/14 04:21

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問