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

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

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

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

Google

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

2回答

838閲覧

【GAS】スプレッドシート一覧からメール送信

HUTURI

総合スコア9

Google Apps Script

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

Google

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2018/07/03 15:09

編集2018/07/04 16:30

前提・実現したいこと

【GAS】スプレッドシートのメルアド一覧から各々にGmail(メール)を送信する方法について

GoogleAppScript初心者です。
スプレッドシートファイルのセルには、以下のセルに値を入れておきます。
A1からA26のセルの範囲に下記の通りにメールアドレスの値が入っております。
■例
A1セル :aaaaaaaa@gmail.com
A26セル:zzzzzzzz@gmail.com

B1からB26のセルの範囲に下記の通りにURLのリンクの値が入っております。
■例
B1セル :aaaaaaaa.html
B26セル :zzzzzzzz.html

上記のA1~A26のメールアドレスの値を取得して
上記のB1~B26のURL(リンク)の値を取得して、
スプレッドシートから各々にメール(GMAIL)を送信する機能を作成しております。

GoogleAppScriptにてGmailを下記の通りにメール送信出来るようにしたいです。
私が書いた拙いソースコードをScriptにて実行すると無効なメールと
エラーメッセージが表示されてしまい、送信できない状況です。
原因が全く分からない為、ご教授の程、よろしくお願いいたします。


宛先:aaaaaaaa@gmail.com 
本文
お疲れ様です。

下記urlご覧ください。
aaaaaaaa.html

該当のソースコード

function sub1() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var url = sheet.getUrl(); var id = sheet.getSheetId(); //列を取得   var data = sheet.getRange("B1:B26").getValues(); for (var j =1; < 26; j++) { //列を取得 var mail_address = sheet.getRange("A1:A26").getValues(); for (var i =1; < 26; i++ ) { sendMail(mail_address[i], data[j]); } } // メールを送る function sendMail(mail_address) { var subject1 = "○○について"; var body = "お疲れ様です。。\n下記urlご覧ください。\n"; var message= data ; MailApp.sendEmail({to:mail_address , subject:subject1, body:body + message }); } }

試したこと

私が書いた拙いソースコードをScriptにて実行すると無効なメールとですと
エラーメッセージが表示されてしまい、送信できない状況です。
原因が全く分からない為、ご教授の程、よろしくお願いいたします。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

ベストアンサー

ループが2重で回っているので、1人の人に何件もメールを送る形になってしまっていますね。
実現したいのは、行ごとにA列のアドレスにB列のURLを送付ですよね。
下記でいかがでしょうか。

JS

1function sub1() { 2 var sheet = SpreadsheetApp.getActiveSpreadsheet(); 3 var url = sheet.getUrl(); 4 var id = sheet.getSheetId(); 5 var data = sheet.getRange("A1:B26").getValues(); 6 7 for (var i in data) { 8 sendMail(data[i]); 9 } 10} 11 12// メールを送る 13function sendMail(data) { 14 var subject = "○○について"; 15 var message = "お疲れ様です。。\n下記urlご覧ください。\n"; 16 var toAddress = data[0]; 17 var url = data[1]; 18 19 MailApp.sendEmail(toAddress, subject, message + url); 20}

投稿2018/07/05 04:47

macaron_xxx

総合スコア3191

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

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

HUTURI

2018/07/06 16:35

ご回答ありがとうございます。 コードと解説までして頂きまして、ありがとうございました。 私の環境に合わせてコードを少し変更しましたが、 ほぼご紹介のコードで思った形となりました。 自分では思いつかなかったので大変勉強になりました。
guest

0

該当のソースコードに記載のものはエラーで保存すらできないので、とりあえず↓にしてみてください。(保存はできます)
これでどうダメか教えてください。

javascript

1 function sub1() { 2 var sheet = SpreadsheetApp.getActiveSpreadsheet(); 3 var url = sheet.getUrl(); 4 var id = sheet.getSheetId(); 5   var data = sheet.getRange("B1:B26").getValues(); 6 var mail_address = sheet.getRange("A1:A26").getValues(); 7 for (var j =0; j< 26; j++) { 8 for (var i =0; i< 26; i++ ) { 9 sendMail(mail_address[i], data[j]); 10 } 11 } 12 } 13// メールを送る 14 function sendMail(mail_address, data) { 15 var subject1 = "○○について"; 16 var body = "お疲れ様です。。\n下記urlご覧ください。\n"; 17 var message= data ; 18 MailApp.sendEmail({to:mail_address , subject:subject1, body:body + message }); 19 }

投稿2018/07/05 02:20

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問