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

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

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

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

Q&A

解決済

1回答

1802閲覧

GASを使用して、グーグルスプレッドシートに記載されているEメールアドレス宛に、Eメールを一斉送信する

Tottoroo

総合スコア1

Google Apps Script

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

0グッド

0クリップ

投稿2021/07/03 15:14

編集2021/07/03 15:17

GASを使用してスプレッドシートに記載されているEメールアドレスに一斉送信する

1. やりたいこと、解決したいこと

グーグルドキュメントで用意した文章を、問題なくGASを使用して一斉送信する。

2. 実行したこと、コマンドエラー

function sendMail(){ const sheet = SpreadsheetApp.getActiveSheet(); const lastRow = 100; sheet.getLastRow(); const values = sheet.getRange(1, 1, lastRow, 4).getValues(); const doc = DocumentApp.openById('ドキュメントID'); const docText = doc.getBody().getText(); const subject = '新しい人材の紹介です'; //メールの件名 const senderName = {name: '山田太郎'}; //差出人名 for(let i = 1; i < lastRow; i++){ const company = values[i][0]; //会社名 const lastName = values[i][1]; //姓 const firstName = values[i][2]; //名 const mailAddress = values[i][3]; //アドレス const body = docText .replace('{会社名}',company) .replace('{姓}',lastName) .replace('{名}',firstName); GmailApp.sendEmail(mailAddress, subject, body, senderName); } }
23:57:07 お知らせ 実行開始 23:57:09 エラー Exception: Failed to send email: no recipient sendMail @ コード.gs:19

@ コード.gs:19 とは、こちらのことです。
GmailApp.sendEmail(mailAddress, subject, body, senderName);

3. 事象

Eメールは無事にドキュメントに記載のある宛先全てに送信することができました。
会社名、名、ともにドキュメントで用意された文の入力に成功しました。

しかし、性のみ正しく表示されません。
{姓}の状態のまま表示されます。

ドキュメント、コードともに確認しましたが、全角にはなっていません。

4. 最後に

どなたか原因と解決策をご教示いただけないでしょうか。
よろしくお願いいたします。

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

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

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

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

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

itagagaki

2021/07/03 16:20

問題は replace('{姓}',lastName) が効かないということですか? Exception: Failed to send email: no recipient のエラーは解消されたということですか?
Tottoroo

2021/07/04 07:52 編集

早速のご連絡ありがとうございます。 問題は replace('{姓}',lastName) が効かないということです。 また、Exception: Failed to send email: no recipient のエラーも解消されておりません。 replace('{姓}',lastName) が効かない原因は、Exception: Failed to send email: no recipient のエラーなのではと考えておりますが、replace('{姓}',lastName) と、全く関係ないのでしょうか?
guest

回答1

0

ベストアンサー

しかし、性のみ正しく表示されません。
{姓}の状態のまま表示されます。

姓ですか?性になっていたりしませんか?
実際上記の文でも間違われていますので…。

コードに間違いは無いようなので、データが{姓}になっていないとしか考えられませんね。
念入りに確認してください。


const lastRow = 100;
sheet.getLastRow();

sheet.getLastRow();が使われていませんね。

for(let i = 1; i < lastRow; i++){

iが1から99まで行ってしまうので、

const mailAddress = values[i][3];
GmailApp.sendEmail(mailAddress, subject, body, senderName);

でスプレッドシートから拾った値がiによってはmailAddressが空になり、

Exception: Failed to send email: no recipient

が発生するのだと思います。

正しくは

GAS

1const lastRow = sheet.getLastRow(); 2for(let i = 1; i <= lastRow; i++){

なのではないでしょうか。

投稿2021/07/04 08:49

itagagaki

総合スコア8402

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

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

Tottoroo

2021/07/04 09:00

itagagaki様 >>姓ですか?性になっていたりしませんか? おっしゃる通りです、スクリプト側の文字が【姓】となっておりました。 注意力が散漫になっておりました、ご指摘ありがとうございます。 エラーについてですが、無事に解消され、正しく動作しました。 また、正しいコードについても解説していただきありがとうございます。 自分の過ちが理解できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問