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

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

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

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

Gmail

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

Google Apps Script

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

Q&A

解決済

1回答

1041閲覧

GASでメールを一斉に作成する際、列ごとに宛先を指定することができません。

NM_mmm

総合スコア2

Google スプレッドシート

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

Gmail

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

Google Apps Script

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

0グッド

0クリップ

投稿2021/06/26 09:38

編集2021/06/26 12:35

前提・実現したいこと

GASを用いて複数のメールを一斉作成するコードを書いています。
列ごとに「to」「件名(物件名)」「差し込み文書(担当者名を挿入)」を設定しています。
「件名」「差し込み文書」は上手く列ごとに作成できたのですが、
全てのメールの「to」がメール1の To1,To2,To3 になってしまいます。

メール1は【3行目】の宛先へ、メール2は【4行目】の宛先へ送りたいです(下記スプレッドシートご参照)。
メールは一度に30件程度作成します。

for文で繰り返すスクリプトを入れたのですが、
下記のrecipientの指定が間違えているのかなと考えているのですが、
どうすればいいのか分かりません。

ご教授いただければ幸いです。
宜しくお願い致します。

※補足です※
アドレスのセルにはFILTER関数を入れていて、
別途の表からメールアドレスを取ってくるようにしています。
(E,F,G列の担当者名を入れると、別表からB,C,D列にアドレスが入ります。)

発生している問題

全てのメールの宛先がメール1の To1,To2,To3 になる。

該当のソースコード

let lastRow = sheetList.getLastRow(); let recipient = sheetList.getRange(3, 2, lastRow-2, 3).getValues()[0];

↓全体のコードです。

const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheetList = ss.getSheetByName('01_リスト'); const sheetmailbun = ss.getSheetByName('02_メール文'); function teishutusha() { let lastRow = sheetList.getLastRow(); let kirinsan = sheetList.getRange(3, 2, lastRow-2, 9).getValues(); const columName = sheetList.getRange(2, 2, 1, 9).getValues()[0]; let kabasan = []; //空のリストを定義 for (let zousan of kirinsan) { let nekosan = {}; for (let index in zousan) { nekosan[columName[index]] = zousan[index]; } kabasan.push(nekosan); } return kabasan; } function createDraft(){ let kabasan = teishutusha(); for(let nekosan of kabasan){ let _subject = sheetmailbun.getRange('C2').getValue(); let subject = _subject.replace('${物件名}', nekosan['物件名']) let _body = sheetmailbun.getRange('c3').getValue(); let body = _body.replace(/${担当者1}/g, nekosan['担当者1']) .replace(/${担当者2}/g, nekosan['担当者2']) .replace(/${担当者3}/g, nekosan['担当者3']) .replace(/${物件名}/g, nekosan['物件名']) let options = { //★★★ccを”,”でいれる!!★★★ "cc": "cc_desuyo@gmail.com,cc_desuyo-222@gmail.com" } let lastRow = sheetList.getLastRow(); let recipient = sheetList.getRange(3, 2, lastRow-2, 3).getValues()[0]; GmailApp.createDraft(recipient, subject, body, options); } }

↓引用したいスプレッドシートです。

-|【B2セル】To1|【C2】To2|【D2】To3|【E2】担当者1|【F2】担当者2|【G2】担当者3|【H2】物件名|
|:--|:--:|--:|
メール1|aaa@gmail.com|bbb@gmail.com|ccc@gmail.com|佐々木|山田|佐藤|札幌|
メール2|ddd@gmail.com|eee@gmail.com|fff@gmail.com|小林|島田|岡田|名古屋|
メール3|ggg@gmail.com|hhh@gmail.com|iii@gmail.com|石川|桜井|小島|大阪|

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

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

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

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

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

guest

回答1

0

ベストアンサー

GmailApp.createDraftのrecipientは,区切りのテキストで記述する必要があるようです。
https://developers.google.com/apps-script/reference/gmail/gmail-app#createdraftrecipient,-subject,-body

実際に実行したわけではありませんが該当のソースコードを以下のように変えてみてはいかがでしょうか?
let recipient = nekosan['To1'] + "," + nekosan['To2'] + "," + nekosan['To3']

投稿2021/06/26 11:14

sakaki0201

総合スコア14

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

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

NM_mmm

2021/06/26 12:29

ご返答ありがとうございます。 やってみたのですが「無効なメール」となってしまいました。 アドレスのセルにはFILTER関数を入れていて、 別途の表からメールアドレスを取ってくるようにしています。 教えていただいた方法だと、FILTER関数がそのままtoに挿入されてしまうようです。 すみません、質問文への説明不足でした・・。
sakaki0201

2021/06/26 13:53

getValue()は数式ではなく値を取得するはずですが、、、 getDisplayValue()をつかってみてはいかがですか?
NM_mmm

2021/06/26 16:06

早速のご返答ありがとうございます。 できました!! スプレッドシートに変な文字が入っていて、それが影響していたようです。 セルをきれいにしたら、最初に教えていただいた方法で、きちんとメールが作成されました。 本当に本当にありがとうございました! getDisplayValueというのもあるんですね。 初めて知りました。勉強になりました。 重ねてお礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問