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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

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

Google Apps Script

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Google

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

Q&A

1回答

2228閲覧

GASで複数の宛先に一斉送信する際に添付ファイル(ZIP)を差し込みにしたい

akino_yonaga

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Gmail

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

Google Apps Script

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Google

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

0グッド

2クリップ

投稿2020/09/17 07:54

編集2020/09/18 02:11

前提・実現したいこと

専門外のものです。
googleスプレッドシートを使って複数の宛先にそれぞれ別の添付ファイル(ZIPファイル)を添付して
メールを一括送信したいです。
スプレッドシートで下記のコードを書き込んで、同一の添付ファイルをつけるところまでは出来ました。
下記コードではタイトルと本文のみ差し込み(可変部分の設定)ができるようになっているのですが、
これを、添付ファイルも差し込みにしたいです。

スプレッドシートのつくりは「補足情報」の欄に記載しております。

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

同一のファイルしかメール添付できない

該当のソースコード

function pushSendButton() { /* スプレッドシートのシートを取得と準備 */ var ss = SpreadsheetApp.getActiveSpreadsheet(); //このスプレッドシート var mainSheet = ss.getSheetByName("main"); //メインシート var skSheet = ss.getSheetByName("sashikomi"); //差込シート var skEndRow = skSheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得 var count = skEndRow - 1; // 送信確認 var select = Browser.msgBox("メールを一括送信します!", count + "件のメールを送信しますが、よろしいですか?", Browser.Buttons.OK_CANCEL); if (select == 'ok') { sendEmail(); } if (select == 'cancel') { Browser.msgBox("送信をキャンセルしました"); } } function sendEmail() { /* スプレッドシートのシートを取得と準備 */ var ss = SpreadsheetApp.getActiveSpreadsheet(); // このファイル var mainSheet = ss.getSheetByName("main"); // メインシート var skSheet = ss.getSheetByName("sashikomi"); // 差込シート var skEndRow = skSheet.getDataRange().getLastRow(); // シートの使用範囲のうち最終行を取得 var attachedFileId = mainSheet.getRange(7, 2).getValue(); // 添付ファイルのID /* メール基本データの設定 */ var strFrom = mainSheet.getRange(3, 2).getValue(); // fromメールアドレス var strSender = mainSheet.getRange(4, 2).getValue(); // 差出人の名前 var strSubject = mainSheet.getRange(5, 2).getValue(); // メールタイトル var strBody = mainSheet.getRange(6, 2).getValue(); // 本文 if (attachedFileId) { var attachedFile = DriveApp.getFileById(attachedFileId); // 添付ファイル } var strSubjectIns = ""; // 差込後のメールタイトル var strBodyIns = ""; // 差込後のメール本文 for (var i = 2; i <= skEndRow; i++) { // 差込シートの取得 var strToEmail = skSheet.getRange(i, 1).getValue(); // 送信先メール var strCc = skSheet.getRange(i, 2).getValue(); // CC var strBcc = skSheet.getRange(i, 3).getValue(); // BCC var sk1 = skSheet.getRange(i, 4).getValue(); // 差込① var sk2 = skSheet.getRange(i, 5).getValue(); // 差込② var sk3 = skSheet.getRange(i, 6).getValue(); // 差込③ var sk4 = skSheet.getRange(i, 7).getValue(); // 差込④ var sk5 = skSheet.getRange(i, 8).getValue(); // 差込⑤ var sk6 = skSheet.getRange(i, 9).getValue(); // 差込⑥ // 差込を反映 strSubjectIns = strSubject.replace(/$1/g, sk1).replace(/$2/g, sk2).replace(/$3/g, sk3).replace(/$4/g, sk4).replace(/$5/g, sk5).replace(/$6/g, sk6); //タイトル strBodyIns = strBody.replace(/$1/g, sk1).replace(/$2/g, sk2).replace(/$3/g, sk3).replace(/$4/g, sk4).replace(/$5/g, sk5).replace(/$6/g, sk6); //本文 /* メール送信 */ if (attachedFileId) { // 添付ファイル有りの場合 GmailApp.sendEmail( strToEmail, //toアドレス strSubjectIns, //メールタイトル strBodyIns, //本文 { cc: strCc, //ccアドレス bcc: strBcc, //bccアドレス from: strFrom, //fromアドレス name: strSender, //差出人 attachments: attachedFile //添付ファイル } ); } else { // 添付ファイル無しの場合 GmailApp.sendEmail( strToEmail, //toアドレス strSubjectIns, //メールタイトル strBodyIns, //本文 { cc: strCc, //ccアドレス bcc: strBcc, //bccアドレス from: strFrom, //fromアドレス name: strSender, //差出人 } ); } } Browser.msgBox("送信が完了しました。"); }

補足情報(FW/ツールのバージョンなど)

スプレッドシートにはコードの通り2つのシートを用意しており、
「main」というシートの2列3行目から下に向かって順に
(2列3行目)発信者メールアドレス
(2列4行目)発信者名前
(2列5行目)件名
(2列6行目)本文
(2列7行目)添付ファイル
の情報を記入しています。
現時点では件名および本文の中に$1~$6の差し込み(可変コード)が含まれております。

次に「sashikomi」というシートに
メールの送信先・CC・BCC・差し込み部分に代入する情報を記載しています。
1列2行目から右に向かって順に
宛先メールアドレス CCアドレス BCCアドレス 差込① 差込② 差込③ 差込④ 差込⑤ 差込⑥ 差込⑦
の情報を記載しており、2行目から下に向かってA社、B社、C社… と送信先のリストが並んでいる状態です。

差込⑦の列に、ドライブにアップロードしたZIPファイルのID(ファイル名にできるとなお嬉しいです)を
A社、B社、C社、、、とそれぞれ記入し、
「main」シートの2列7行目には「$7」と記入し、差込としたいです。

説明が下手で申し訳ございませんが、どうぞよろしくお願いいたします。

◆「main」シートイメージ
「main」シートイメージ

◆「sashikomi」シートイメージ
「sashikomi」シートイメージ

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

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

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

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

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

ttyp03

2020/09/17 08:09

VBAとの関連性は?無関係であればタグを削除してください。 おそらくGASが本来のタグかと思います。
akino_yonaga

2020/09/18 01:35

失礼いたしました。削除しました。
papinianus

2020/09/18 01:37

コードを読む気持ちが無なのでシートのデータサンプルをください。 できればmdで、できなければスクショで。
akino_yonaga

2020/09/18 02:12

すみません、素人でして、スクショになってしまいましたが追加いたしました。ありがとうございます。
guest

回答1

0

まだ回答ついてないようなので、コード無しの回答を。

質問文の中のコードの中で、「添付ファイル」に関連するものはメモでわかると思います。
それらを全て for文の中に入れてあげて、getRange(7, 2).getValue() で取得している
添付ファイルIDを取得するコードを iを使った記述に変更すれば、希望される動作になるかと思います。

「main」シートの2列7行目には「$7」と記入し、差込としたいです。

この部分は少し気になりましたが、添付ファイルは 本文中の差し込みって感じではないです。
どちらかというとCCやBCCの記述部分に近いかも。

もう少し待ってるとコード付き回答が出てくるかもしれませんが、まずは上記を色々試してみてはいかがでしょうか。

投稿2020/09/23 02:52

sawa

総合スコア3002

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

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

akino_yonaga

2020/09/23 11:04

ありがとうございます!素人なのでうーんと考えながら書き換えてみます! 添付ファイルの可変方法については、本文などと同じような差し込みのイメージだと違和感があるということですね… もう一度、つくりをよく確認してみます。 すみません、一生懸命試してみますので解決済みにするのは少し待っていただければと思います!申し訳ございません。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問